ActiveModel :: MissingAttributeError:无法使用FactoryGirl写入未知属性“ad_id”

我有以下型号:

class Ad < ActiveRecord::Base belongs_to :page has_one :image has_one :logo end class Page < ActiveRecord::Base has_many :logos has_many :images has_many :ads end class Image < ActiveRecord::Base belongs_to :page has_many :ads end 

我已经定义了以下工厂:

 factory :page do url 'test.com' end factory :image do width 200 height 200 page end factory :ad do background 'rgb(255,0,0)' page image end 

当我尝试这样做时:

ad = FactoryGirl.create(:ad)我收到以下错误: ActiveModel::MissingAttributeError: can't write unknown attribute ad_id'在我决定广告工厂中的图片关联的行中ActiveModel::MissingAttributeError: can't write unknown attribute ad_id'

我在这做错了什么?

当你说:

 has_one :image 

Rails希望您在images表中定义ad_id字段。 鉴于您的关联组织方式,我假设您有一个image_id和一个logo_id ads表,而不是:

 class Ad < ActiveRecord::Base belongs_to :page has_one :image has_one :logo end 

你可能意味着:

 class Ad < ActiveRecord::Base belongs_to :page belongs_to :image belongs_to :logo end 

如果不是这种情况,那么您需要在ImageLogo添加ad_id列。