JOIN当有多个记录时,有没有办法强制在 Rails 中的活动记录上建立索引JOIN当存在
我希望最终的 SQL 生成为:
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
INNER JOIN table3 USE INDEX('my_index')
ON table2.new_id = table3.new_id
Run Code Online (Sandbox Code Playgroud)
希望这样的事情是可能的吗?
我有这个确切的错误消息:undefined method to_model\' for #<Onduleur::ActiveRecord_Relation:0x007f8bcf631110>
我错过了一些东西......但是什么?\n感谢您的帮助:)
\n\n这是views/installations/_form.html.erb中的搜索表单
\n\n<%= simple_form_for :query, url: @onduleurs, method: :get, wrapper: :inline_form, html: {class: \'form-inline\'} do |f| %>\n <%= f.input :identifier, collection: Onduleur.group(:identifier).map {|o| o.identifier} , prompt: "Choississez un onduleur" %>\n <%= f.button :submit, "Chercher", class:"btn btn-success" %>\n <%= link_to "Voir tous les onduleurs", {controller: "installations", action: \'show\'}, class: "btn btn-success" %>\n<% end %>\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的Installations_controller.rb
\n\n class InstallationsController < ApplicationController\n\n def index\n @installations = Installation.all\n end\n\n def show\n filter_onduleurs …Run Code Online (Sandbox Code Playgroud) 我有一个成绩模型,我需要从中提取两列的平均值 - 准确性和时间。I\xe2\x80\x99m 使用以下查询将两个值放在一起,而不是查询模型两次。
\n\nGrade.where(student_id: 25).pluck('avg(accuracy), avg(time)')\nRun Code Online (Sandbox Code Playgroud)\n\n我得到了两个值,但它们的格式如下,我不明白:
\n\n[[#<BigDecimal:7f9c5a890410,\xe2\x80\x998.0\xe2\x80\x99,9(18)>, #<BigDecimal:7f9c5a8903c0,\xe2\x80\x9910.0\xe2\x80\x99,9(18)>]]\nRun Code Online (Sandbox Code Playgroud)\n\n如何从中提取我需要的值?即 avg_accuracy = 8.0 和 avg_time = 10.0
\n\n我是 Ruby、Rails、ActiveRecord 的新手。我很感激你的帮助。
\n有谁知道如何挽救 Rails 中的 ActiveRecord::StatementInvalid 错误?控制台显示“PG::InvalidTextRepresentation: 错误: 整数的输入语法无效...”。我尝试过将撬片插入救援块,但从未被调用。
if (resource_params[:term].present?)
begin
key = resource_params[:term]
scope = scope.where("id = ? OR item_type = ? OR item_id = ? OR event = ? OR object ILIKE ?", key, key, key, key, "%#{key}%")
rescue
# handle error
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,我知道如何防止错误发生(即需要将键转换为 id 列的整数类型)。但是,我试图理解为什么它永远不会到达救援区。
更新:我最初的帖子包含一个语法错误(即:rescue e => error),正如其他人正确指出的那样。我仍然收到相同的错误,但没有语法错误;我已经更新了代码以删除不正确的语法。
我有一个带有范围列的模型
#<JobRequirement id: 1, age: 18...30>
Run Code Online (Sandbox Code Playgroud)
我怎样才能JobRequirement使用age: 20?
就像是
JobRequirement.where(age: 20)
Run Code Online (Sandbox Code Playgroud) 使用 mysql 时,尝试将日期时间列与 Rails 中的日期进行比较时遇到问题。例如,我想找到在 2020-05-01 创建的用户,但“created_at”列的类型是日期时间,首先我尝试:
User.where("date(created_at) = ?", date) # date is 2020-05-01
Run Code Online (Sandbox Code Playgroud)
但是当我在日本时区使用rails并且在 2020-05-01 07:00 GMT+9 创建的用户时,rails 会将其保存在 mysql 中 GMT+0 。这意味着mysql中的created_at是2020-04-30 22:00 GMT+0。然后就User.where("date(created_at) = ?", date)不会返回这个了。
对于这种情况有好的解决办法吗?
我是 Ruby on Rails 的新手,正在开发后端 API。
目前,我有 2 个 Active Record 模型,分别称为Book和User。
class Book < ActiveRecord::Base
has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
has_and_belongs_to_many :books
end
Run Code Online (Sandbox Code Playgroud)
create_table :books do |t|
t.string "title"
end
create_table :users do |t|
t.string "name"
end
#User favourite books
create_join_table :users, :books do |t|
t.index [:user_id, :book_id]
t.index [:book_id, :user_id]
end
#User read books
create_join_table :users, :books do |t|
t.index [:user_id, :book_id]
t.index [:book_id, :user_id]
t.integer "read_pages"
t.string "status"
t.integer …Run Code Online (Sandbox Code Playgroud) 我想检查我的结果集是否属于类型ActiveRecord::Associations::CollectionProxy
例如我的模型如下
class Dashboard < ApplicationRecord
has_and_belongs_to_many :organisations
end
Run Code Online (Sandbox Code Playgroud)
class Organisation < ApplicationRecord
has_and_belongs_to_many :dashboards
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,organisation.dashboards我想检查一下是否是ActiveRecord::Associations::CollectionProxy
但像下面这样的东西不起作用。
expect(organisation.dashboards).to be(ActiveRecord::Associations::CollectionProxy)
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常好,谢谢。
我有一个名为“foods”和“categories”的表,但该表没有关系,我想通过另一个名为“food_category”的表连接它们。我想在食物和类别之间建立一对一的关系,也许图表看起来像这样
class Food < ApplicationRecord
has_one :category
end
class Category < ApplicationRecord
has_one :food
end
class FoodCategory < ApplicationRecord
belongs_to :category
belongs_to :food
end
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?
ruby postgresql activerecord ruby-on-rails relational-database
我有一个Post和Tag模型通过Tagging模型加入has_many :through
我params[:tag_ids]从我的表单传入,我正在尝试获取所有标记有所有标记的帖子(不仅仅是标记中的任何一个).
我正在尝试以下方法:
@ftags = params[:tags_ids]
@objArray = Array.new
@ftags.each do |tag|
@array = Tagging.where("tag_id=#{tag}")
@objArray.push @array
end
Run Code Online (Sandbox Code Playgroud)
...现在我想做的是以某种方式组合这些查询以获得正确的帖子.在我只有两个查询之前,我曾经和merge命令结合使用,如下所示:
@result = @query1.merge(@query2)
Run Code Online (Sandbox Code Playgroud)
...但是现在我有一些动态的查询,我仍然希望最终将它们组合起来.如何在特定列的特定值的循环内进行合并?
activerecord ×10
ruby-on-rails ×10
ruby ×6
postgresql ×3
mysql ×2
api ×1
indexing ×1
rest ×1
rspec ×1