我有一個模型CompanyIntro,它有兩個對Company的參考:
class CompanyIntro < ApplicationRecord
belongs_to :company_one, class_name: "Company", foreign_key: "company_one_id".
belongs_to :company_two, class_name: "公司", foreign_key: "company_two_id"
...
我想做的是:
class Company < ApplicationRecord
has_many :company_intros, class_name: 'CompanyIntro', foreign_key: 'company_one_id'.
has_many :company_intros, class_name: 'CompanyIntro', foreign_key: 'company_two_id'。
...
但這是無效的
在我的Company模型中,我如何為兩個外鍵創建一個has_many?我使用的是Rails 6,它不允許為has_many定制sql(據說)。我也不想在Company模型上寫一個自定義的company_intros方法,因為我正在使用另一個gem,它可以尋找我的has_many關系。
uj5u.com熱心網友回復:
你不能定義外鍵是兩列之一的has_manyassocations。ActiveRecord不支持這個功能,因為它將增加大量的復雜性。
為兩個分配使用相同的名稱也只是覆寫了之前的分配。如果你想在這里有一個單一的分配,你需要添加一個連接表。
class Company < ApplicationRecord
has_many :company_intro_participations[/span]。
has_many :company_intros, through: :company_intro_participations.
結束
# for lack of a better name[/span]class CompanyIntroParticipation < ApplicationRecord
belongs_to:company
belongs_to :company_intro
end
class CompanyIntro < ApplicationRecord
has_many :company_intro_participations:company, through: :company_intro_participations.
end
替代方法是創建一個方法,該方法連接company_one_id = companies.id OR company_two_id = companies.id,但是當涉及到急切加載等內容時,你將不能以與關聯相同的方式使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307005.html
標籤:
下一篇:語法錯誤。無效的正則運算式
