如何在关联中访问self.id.

时间:2012-07-17 09:13:24

标签: ruby-on-rails-3 associations

我有这样的用户模型

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?或者有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

您确定不只是希望foreign_key成为owner_id吗?这样,您根本不需要conditions数组。

无论如何,你无法在关联定义中访问self.id的原因是因为代码被评估的范围。在加载类时评估关联,而不是在实际调用{{1 } #received_msgs实例上的方法。

我相信你可以通过将conditions数组包装在lambda中来访问实例的User。这样,在你调用它之前不会对它进行评估。