我有一个简单的连接查询,它在某些情况下会返回带有未初始化关联的 ActiveRecord 对象,我试图了解原因。(我的设置:带有 MySQL 的 rails 2.3.8)
这是我的模型:
class Member
has_many :twitter_status_relations
//has some more unrelated associations
end
class TwitterStatus
has_many :twitter_status_relations
end
class TwitterStatusRelation
belongs_to :member
belongs_to :twitter_status
end
这是我执行的查询:
result = TwitterStatusRelation.all(:joins => :twitter_status,
:conditions=>{:twitter_statuses=>{:sent_at=>1.month.ago..DateTime.now}}, :include=>:member,:group=>"twitter_status_relations.member_id")
现在,当我第一次在应用程序中运行它时,它工作正常:
print result[0].member, result[0].member.class.reflect_on_all_associations(:has_many)
#=> <Member...>, [<ActiveRecord::Reflection::AssociationReflection,...]
但是,当我再次运行它并尝试访问该成员的任何关联时,我得到 nil 异常。打印显示以下内容:
print result[0].member, result[0].member.class.reflect_on_all_associations(:has_many)
#=> <Member...>, [-- empty ---]
看起来成员对象没有任何关联,因此当我尝试访问其中任何一个时,都会出现异常。
你知道为什么 ActiveRecord 在某些情况下不会初始化返回对象的关联吗?我将不胜感激,因为我被困住了。