我在model_1和model_2之间有一个简单的has_many关系:
class Model1 < ActiveRecord::Base
has_many :models_2
end
class Model2 < ActiveRecord::Base
belongs_to :model_1
end
现在,我通过关系创建了Model2的实例:
irb>m1 = Model1.first
irb>m2 = m1.models_2.new
现在,如果我想询问关系的大小,Rails 3.0.x和Rails 3.1之间存在巨大差异。
按照上一个示例,在 Rails 3.0.x 中,我得到:
irb>m1.models_2.any?
irb>false
irb>m1.models_2.size
irb>0
这意味着,不考虑新对象
Rails 3.1 :
中完全相同的查询irb>m1.models_2.any?
irb>true #OMG!!
irb>m1.models_2.size
irb>1
所以,解决方案是:
irb>m1.models_2.all.any?
irb>false
irb>m1.models_2.all.size
irb>0
如果我必须改变我与.all之间的所有关系,我会遇到很大麻烦......关于这种情况的任何想法?非常感谢你。