如何在Rails中的连接表上调用方法?

时间:2014-09-29 22:24:04

标签: ruby-on-rails join scope relation

我正在尝试为频繁运行的查询创建一个范围(即有错误的用户)。问题是我必须加入用户和帐户表,然后在帐户表上运行一个方法,以找出哪个用户有错误。换句话说,我需要找到有错误的帐户的用户。我可以在帐户模型上创建这个范围,如下所示:

scope :with_errors -> {joins(:user).map(&:status).select{|status| status['code'] == :error}}

问题是,我必须在Account上定义这个范围,因为我可以在从连接返回的ActiveRecord :: Relation上运行map(&:status)。所以,我的问题是:是否可以在“已加入”表上运行方法,以便我可以在用户模型上定义此范围?

谢谢!

1 个答案:

答案 0 :(得分:4)

This railscast给出了合并查询的示例。在你的情况下,它看起来像:

User.joins(:accounts).merge(Account.with_errors)