我已阅读 this article,但它适用于 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)
或者在 View 中使用它
spammy_messages.each do |reply|
....
end
关于ruby-on-rails - 如何在 Rails 3 中创建自定义 "association methods"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213407/