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
如果不是这种情况,那么您需要在Image
和Logo
添加ad_id
列。