Rails 3.1,has_many关系和新记录问题

时间:2011-09-17 16:57:32

标签: ruby-on-rails-3.1 has-many

我在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之间的所有关系,我会遇到很大麻烦......关于这种情况的任何想法?非常感谢你。

0 个答案:

没有答案