如何在 Rails 3 中创建自定义“关联方法”?

2024-01-06

我读了本文, http://ryandaigle.com/articles/2006/12/03/extend-your-activerecord-association-methods但它适用于 Rails 1.x。

我真的很想创建自己的关联方法:

user = User.find(1)

# Example of a normal association method
user.replies.create(:body => 'very informative. plz check out my site.')

# My association method
user.replies.find_by_spamminess(:likelihood => :very)

在 Rails 3 中,执行此操作的正确方法是什么?


Rails 3 的处理方式通常不使用 find 方法,而是使用范围,这会延迟实际的数据库调用,直到您开始迭代集合。

猜猜你的第一个例子,我会这样做:

在课堂上 回复...

  scope :spaminess, lambda {|s| where(:likelyhood => s) }

然后使用它:

 spammy_messages = user.replies.spaminess(:very)

或在视图中使用它

spammy_messages.each do |reply|
   ....
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 3 中创建自定义“关联方法”? 的相关文章

随机推荐