所以这有效并获取我需要的数据:
def has_function
services = []
Service.find_each do |s|
if s.functions.size > 0
services << s
end
end
return services
end
但是,该方法返回一个数组,我打算将它链接到其他地方:
Service.has_function.visible.includes(:layer)
undefined method `where' for #<Array:0x007faad487a970>
我怎样才能检查这个并返回一些可链接的东西?
最佳答案
您会希望在一个连接中演奏爵士乐,以便所有这些都保留在 ActiveRecord 中。另外...这会快得多,因为它是一个单一的 SQL 查询。只要确保你有适当的索引。
Service.joins(:functions).visible.includes(:layer)
如果您想检查任何不存在的东西,请说计数 > 1;你必须做团体/拥有。
Service.
joins(:functions).
select('services.*, count(functions.id) as function_count').
group('services.id').
having('function_count > 2')
关于ruby-on-rails - has_many.size 大于 0 的 Rails?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26396119/