簡體   English   中英

Rails ActiveRecord:2個與同一模型的關聯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM