Rails有很多自我指涉

bdx*_*bdx 4 associations ruby-on-rails-3

我有一个帐户模型如下(简化):

class Account < ActiveRecord::Base
    attr_accessible :account_number, :display_name, :master_account_id

    has_many :child_accounts, :class_name => "Account", :foreign_key => "id"
    belongs_to :master_account, :class_name => "Account", :foreign_key => "master_account_id"
end
Run Code Online (Sandbox Code Playgroud)

@account.master_account目前工作正常,但我也希望能够访问@account.child_accounts- 我需要做些什么才能解决这个问题?

Ste*_*fan 9

我认为必须反过来说:

class Account < ActiveRecord::Base
  has_many :child_accounts, :class_name => "Account", :foreign_key => "master_account_id"
  belongs_to :master_account, :class_name => "Account"
end
Run Code Online (Sandbox Code Playgroud)

  • 的确如此.在阅读了几次,同时牢记轨道魔术它开始有意义; belongs_to会自动在当前模型中查找其后面的符号+ _id,并将其用作自己的外键,因此我不需要像我尝试那样明确指定它.has_many不知道指向它的外键是"master_account_id",因此需要明确告知它,以便反向查找也可以工作. (2认同)