[英]Rails ActiveRecord: 2 associations to same model
我有一個模型Project,該模型具有與同一個模型的兩個related_to關聯:
belongs_to :source_connection, class: Connection
belongs_to :destination_connection, class: Connection
但另一方面,每個連接都應該與項目只有一個關聯。 添加
has_one :project, foreign_key_id: source_connection_id
or
has_one :project, foreign_key_id: destination_connection_id
不會削減它,因為連接本身不知道它是源連接還是目標連接。
顯然,我在設計這種關聯時存在一個缺陷,我只是很好奇它的正確方法。 值得一提的是,“連接”具有許多繼承類(SSHConnection,S3Connection等),因此將“連接”類拆分為“源”和“目標”連接模型將導致大量重復。
任何想法歡迎。
你近了! 您可以重新設計,也可以嘗試為不同的連接類型以不同的方式命名項目:
has_one :source_project, class: "Project", foreign_key_id: source_connection_id
or
has_one :destination_project, class: "Project", foreign_key_id: destination_connection_id
例如,這允許您調用@ connection.source_project以獲取該連接為其源連接的項目。 為您的目標命名可能會有更清晰的方法。
從Rails 4.2.5開始,命名關聯的語法與接受的答案中的語法稍有不同,新版本將是:
has_one :source_project, class_name: "Project", foreign_key: :source_connection_id
or
has_one :destination_project, class_name: "Project", foreign_key: :destination_connection_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.