我可以重写关联方法的返回值吗?



在Rails中,我想重写关联的行为。例如,默认情况下,如果Person has_many :hats,调用some_person.hats将使用person.idhat.person_id执行简单的连接。

我想修改该查询以包含一些其他条件。例如,也许一个人的帽子收藏应该只是适合他们国家的帽子。

似乎我可以这样做:

class Person < ActiveRecord::Base
  has_many :hats, :through => :country do
    # John lives in Canada, so he gets a baseball cap and a hockey helmet
    self.country.hats
  end
end

我可以像这样控制关联返回什么吗?如果不是,一个范围是最好的解决方案吗?

我知道这是一个愚蠢的例子,但是解释我需要这个的领域逻辑对这里的每个人来说都太无聊了。:)

作用域可能是您最好的选择,因为它们在您的关联之外是可链接和可重用的。否则,您可以使用关联扩展。查看这个帖子了解更多信息。协会扩展

相关内容

  • 没有找到相关文章

最新更新