spi*_*ock 0 scope join ruby-on-rails relation
我正在尝试为频繁运行的查询(即有错误的用户)创建范围。问题是我必须加入用户表和帐户表,然后在帐户表上运行方法以找出哪个用户有错误。换句话说,我需要找到具有错误帐户的用户。我可以像这样在帐户模型上创建此范围:
scope :with_errors -> {joins(:user).map(&:status).select{|status| status['code'] == :error}}
Run Code Online (Sandbox Code Playgroud)
问题是,我必须在Account上定义此范围,因为这样我就可以map(&:status)在从联接返回的ActiveRecord :: Relation上运行。因此,我的问题是:是否可以在“联接”表上运行方法,以便在用户模型上定义此范围?
谢谢!
此railscast提供了合并查询的示例。在您的情况下,它看起来像:
User.joins(:accounts).merge(Account.with_errors)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |