gpt4 book ai didi

ruby-on-rails - Ruby on Rails : Nested named scopes

转载 作者:行者123 更新时间:2023-12-04 08:53:43 25 4
gpt4 key购买 nike

有没有办法将不同模型的命名范围嵌套在彼此内部?

例子:

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

有什么好的方法可以让我找到一家公司,同时包括这样的员工和配偶: Company.with_employees.with_spouse.find(1)或者我是否有必要在公司中定义另一个named_scope: :with_employees_and_spouse, :include => {:employees => :spouse}
在这个人为的示例中,它并不算太糟糕,但是我的应用程序中的嵌套要深得多,如果我不必添加重新定义嵌套的每个级别的包含的非 DRY 代码,我会喜欢它。

最佳答案

您可以使用默认范围

class Company
default_scope :include => :employees
has_many :employees
end

class Employee
default_scope :include => :spouse
belongs_to :company
belongs_to :spouse
end

class Spouse
has_one :employee
end

那么这应该有效。不过我还没有测试过。
Company.find(1)          # includes => [:employee => :spouse]

关于ruby-on-rails - Ruby on Rails : Nested named scopes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com