我有两个模型AssetEvent
和Subsystem
,以及它们之间的联接模型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
)而不是默认值?
答案 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'