Wil*_*nes 8 activerecord named-scope nested ruby-on-rails include
有没有办法从不同的模型中将命名范围嵌套在彼此之内?
例:
class Company
has_many :employees
named_scope :with_employees, :include => :employees
end
class Employee
belongs_to :company
belongs_to :spouse
named_scope :with_spouse, :include => :spouse
end
class Spouse
has_one :employee
end
Run Code Online (Sandbox Code Playgroud)
有没有什么好方法让我找到一家公司,同时包括这样的员工和配偶:
Company.with_employees.with_spouse.find(1)
或者我是否有必要在公司中定义另一个named_scope:
:with_employees_and_spouse, :include => {:employees => :spouse}
在这个人为的例子中,它并不是太糟糕,但嵌套在我的应用程序中要深得多,如果我不需要在嵌套的每个级别添加un-DRY代码重新定义include,我会喜欢它.
您需要始终定义所有条件。但是你可以定义一些方法来组合一些named_scope
class Company
has_many :employees
named_scope :with_employees, :include => :employees
named_scope :limit, :lambda{|l| :limit => l }
def with_employees_with_spouse
with_employees.with_spouse
end
def with_employees_with_spouse_and_limit_by(limit)
with_employees_with_spouse.limit(limit)
end
end
class Employee
belongs_to :company
belongs_to :spouse
named_scope :with_spouse, :include => :spouse
end
class Spouse
has_one :employee
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2620 次 |
| 最近记录: |