所以,閱讀文檔的一切,看着我的需求和has_many :through
和has_and_belongs_to_many
的配置選項後,我意識到,我並不真的需要has_many :through
由於聯接的性質,而且由於has_and_belongs_to_many
(簡稱habtm)具有我需要的所有配置選項來定義,正好是我需要的連接類似。我決定嘗試一下這個選項。以下是任何未來Google員工遇到同樣問題的工作代碼。
class Account < ActiveRecord::Base
has_and_belongs_to_many :subscriptions, -> {uniq}, class_name: 'List', join_table: 'accounts_lists', foreign_key: 'subscription_id', association_foreign_key: 'subscriber_id'
has_many :lists, foreign_key: 'creator_id'
end
class List < ActiveRecord::Base
has_and_belongs_to_many :subscribers, -> {uniq}, class_name: 'Account', join_table: 'accounts_lists', foreign_key: 'subscriber_id', association_foreign_key: 'subscription_id'
belongs_to :creator, class_name: 'Account', foreign_key: 'creator_id'
end
而只是指出了另一個有趣的加盟方案我是以下幾點:
class List < ActiveRecord::Base
has_and_belongs_to_many :parents, -> {uniq}, class_name: 'List', join_table: 'lists_lists', foreign_key: 'parent_id', association_foreign_key: 'child_id'
has_and_belongs_to_many :children, -> {uniq}, class_name: 'List', join_table: 'lists_lists', foreign_key: 'child_id', association_foreign_key: 'parent_id'
end
這是許多到許多地方基本上是List
可以Lists
這反過來又可以有Lists
它可以有更多的Lists
等,等等,等等......
希望這可以幫助別人在未來的這個問題...雖然....如果有人知道如何做到這一點與has_many :through
我仍然很想知道這是否可以使用這種類型的連接。