ActiveModel:: MissingAttributeError: не удается записать неизвестный атрибут `ad_id 'с помощью FactoryGirl
У меня есть следующие модели:
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'
прямо в строке, где я решаю ассоциацию изображений в объявлении Factory.
Что я здесь делаю неправильно?
Ответы
Ответ 1
Когда вы говорите:
has_one :image
Rails ожидает, что вы определите поле ad_id
в таблице images
. Учитывая то, как организованы ваши ассоциации, я полагаю, что у вас есть таблица image_id
и logo_id
a 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
Если это не так, вам нужно добавить столбцы ad_id
в оба Image
и Logo
.