ActiveModel:: MissingAttributeError: ne peut pas écrire l'attribut inconnu 'ad id' avec FactoryGirl
j'ai les modèles suivants:
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
et j'ai défini les usines suivantes:
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
Quand j'essaie de faire ceci:
ad = FactoryGirl.créer (ad) j'obtiens l'erreur suivante ActiveModel::MissingAttributeError: can't write unknown attribute ad_id'
dans la ligne où je décide de l'association d'image dans l'usine de publicité.
Ce que je fais mal?
23
demandé sur
Hommer Smith
2013-11-30 06:08:35
1 réponses
Quand tu dis:
has_one :image
Rail s'attend à ce que vous définissiez un ad_id
champ images
tableau. Compte tenu de la façon dont vos associations sont organisées, je suppose que vous avez un image_id
et logo_id
ads
table de sorte qu'au lieu de:
class Ad < ActiveRecord::Base
belongs_to :page
has_one :image
has_one :logo
end
Tu veux sans doute dire:
class Ad < ActiveRecord::Base
belongs_to :page
belongs_to :image
belongs_to :logo
end
Si ce n'est pas le cas, alors vous devez ajouter ad_id
colonnes aux deuxImage
et Logo
.
38
répondu
Maurício Linhares
2013-11-30 02:43:47