我有一个无法计算关系中行数的rails方法。
我已将问题简化为以下简单示例。
class Group < ActiveRecord::Base
def self.how_many(anything)
anything.count
end
end
a = User.last.groups
a.class
=> Group::ActiveRecord_Associations_CollectionProxy
a.count
=> 1
b = Group.where(id: 1)
b.class
=> Group::ActiveRecord_Relation
b.count
=> 1
通过以上启动,我得到以下结果:
a.how_many(b)
=> 1
b.how_many(a)
=> 0
b.how_many(a.to_a)
=> 1
a.how_many(a)
=> 1
b.how_many(b)
=> 1
我刚刚发现,当a转换为数组时,答案是正确的,如上面第三个例子所示。