mil*_*man 5 activerecord ruby-on-rails
我的Rails应用程序中存在以下情况。假设有用户和公司两种模型:
class User < ActiveRecord::Base
belongs_to :company
default_scope -> {where(removed_at: nil)}
end
Run Code Online (Sandbox Code Playgroud)
和
class Company < ActiveRecord::Base
has_many :users
end
Run Code Online (Sandbox Code Playgroud)
我现在想要的是加载公司记录并包括用户
Company.unscoped.all.includes(:users)
Run Code Online (Sandbox Code Playgroud)
这将导致对包含默认范围的用户表的查询。因此,我获得了所有未删除的用户都已预取的公司记录。但是在这种情况下,我确实也希望其中remove_at不为null的用户(=>已删除的用户记录)。“不受范围限制”的方法仅适用于公司模型,而不适用于用户模型。
有什么办法吗?感谢您的任何想法!
该方法接受一个块。块内的所有查询都不会使用default_scope:
User.unscoped { Company.includes(:users).all }
Run Code Online (Sandbox Code Playgroud)
或者:
User.unscoped do
Company.includes(:users).all
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5821 次 |
| 最近记录: |