我有三个对象(List, ListType and GlobalList)
,我正在尝试使用特定的global_id和特定的list_type_id来计算GlobalList中的项目。
这似乎有效:
select count(*) from globals_lists gl, lists l where gl.global_id=946 and gl.list_id=l.id and l.list_type_id=10;
结构如下:
class ListType < ActiveRecord::Base
has_many: lists
end
class List < ActiveRecord::Base
has_many :global_lists
belongs_to :list_type
end
class GlobalList < ActiveRecord::Base
belongs_to :list
end
不确定如何进行AR调用 - 此时似乎可以在联接中放置一个位置。 list_type_id
始终为10
。
a=GlobalList.where("global_id=?",119).joins(:list)
我如何进行ActiveRecord调用?我通过Google找到的大部分内容涉及命名范围,但似乎应该可以在没有范围的情况下完成。
答案 0 :(得分:1)
第一种方法:
result = GlobalList
.select("COUNT(*) AS total")
.where("globals_lists.global_id=? AND lists.list_type_id=?",119, 10)
.joins(:list)
然后,您将使用result.total
第二种方法是使用count
方法而不是select("COUNT(*) AS total")
GlobalList
.where("globals_lists.global_id=? AND lists.list_type_id=?",119, 10)
.joins(:list)
.count
您可以找到有关ActiveRecord查询界面in Rails Guides的更多信息,或直接找到您感兴趣的内容 count和joins