为什么我的polymorphic_type字段没有被轨道自动分配



我将单表继承与多态关联结合使用。这是我的模型。

class ChangeInformation < ActiveRecord::Base
  belongs_to :eventable, :polymorphic => true
end
class Race < ActiveRecord::Base
  has_many :track_condition_changes, :as => :eventable, :class_name => "ChangeInformation"
  #other associations omitted
end
class TrackConditionChange < ChangeInformation
end

change_information表包含以下字段:

type               #sti field
change_code
eventalbe_id       #polymorphic id
eventable_type     #polymorphic type
description

当我使用以下create方法时:

TrackConditionChange.create(:change_code => 1, :eventable_id => 3 :description => "test")

创建了一个TrackConditionChange记录,并填充了type字段,但是eventable_type字段(应该是Race)没有填充。我的印象是rails自动填充这个字段,类似于STI类型字段。是我印象错了,还是我的协会设置有问题?

如果你只传递eventable_id,它怎么知道它是什么类型?您必须传递整个事件对象,或者基于track_condition_changes关系构建它:

1。传递事件对象:

race = Race.find(3)
TrackConditionChange.create(:change_code => 1, :eventable => race, :description => "test")

2。基于关系构建和保存:

race = Race.find(3)
race.track_condition_changes << TrackConditionChange.new(:change_code => 1, :description => "test")

相关内容

  • 没有找到相关文章

最新更新