Rails没有在belongs_to关联中使用我的`foreign_key`

时间:2015-03-26 12:14:07

标签: ruby-on-rails

我有两个模型AssetEventSubsystem,以及它们之间的联接模型AssetEventSubsystem。它们看起来像这样:

RehabEvent < AssetEvent
  has_many :asset_event_subsystems
  has_many :subsystems, :through => :asset_event_subsystems

AssetEventSubsystem
  belongs_to  :rehab_event, :class_name => 'AssetEvent', :foreign_key => "asset_event_id"
  belongs_to  :subsystem

Subsystem
  belongs_to :asset_type

当我尝试运行RehabEvent.new.asset_event_subsystems.build时,我收到了一个ActiveRecord::UnknownAttributeError: unknown attribute: rehab_event_id,这令人困惑,因为我认为应该由连接模型中的foreign_key选项来处理

如何让rails使用我的数据库中的列(asset_event_id)而不是默认值?

2 个答案:

答案 0 :(得分:2)

看起来你需要:?

RehabEvent < AssetEvent
  has_many :asset_event_subsystems
  has_many :subsystems, :through => :asset_event_subsystems, 
           :foreign_key => "asset_event_id"

AssetEventSubsystem
  belongs_to  :rehab_event, :class_name => 'AssetEvent', :foreign_key => "asset_event_id"
  belongs_to  :subsystem

Subsystem
  has_many :asset_event_subsystems
  has_many :rehab_events, :through => :asset_event_subsystems
  belongs_to :asset_type

顺便说一下,我不知道你的项目,但是你能使用has_and_belongs_to_many吗?

答案 1 :(得分:1)

您需要在foreign_key关联以及has_many上定义belongs_to

has_many :asset_event_subsystems, foreign_key: 'asset_event_id'