我有这样的用户模型
class User < ActiveRecord::Base
has_many :received_msgs, class_name:"Message", foreign_key: "recipient_id", :conditions =>['owner_id = ?', self.id]
has_many :sent_msgs, class_name: "Message", foreign_key: "sender_id", :conditions =>['owner_id = ?', self.id]
我希望owner_id几乎充当辅助外键,因为每条消息都是重复的,以便独立删除。
但是,我收到一条错误,指出没有为该对象定义id。在这种情况下如何访问self.id?或者有更好的方法吗?
由于
答案 0 :(得分:2)
您确定不只是希望foreign_key
成为owner_id
吗?这样,您根本不需要conditions
数组。
无论如何,你无法在关联定义中访问self.id
的原因是因为代码被评估的范围。在加载类时评估关联,而不是在实际调用{{1 } #received_msgs
实例上的方法。
我相信你可以通过将conditions数组包装在lambda中来访问实例的User
。这样,在你调用它之前不会对它进行评估。