ruby-on-rails - rails - factorybot association
ActiveModel:: MissingAttributeError: no se puede escribir el atributo desconocido `ad_id ''con FactoryGirl (1)
Tengo los siguientes modelos:
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
Y he definido las siguientes Fábricas:
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
Cuando trato de hacer esto:
ad = FactoryGirl.create (: ad) Recibo el siguiente error ActiveModel::MissingAttributeError: can''t write unknown attribute ad_id''
justo en la línea donde decido la asociación de imágenes en la Fábrica de anuncios.
¿Qué estoy haciendo mal aquí?
Cuando tu dices:
has_one :image
Rails espera que usted defina un campo ad_id
en la tabla de images
. Dada la forma en que están organizadas sus asociaciones, asumo que tiene un image_id
y un logo_id
en la tabla de ads
, así que en lugar de:
class Ad < ActiveRecord::Base
belongs_to :page
has_one :image
has_one :logo
end
Probablemente te refieres a
class Ad < ActiveRecord::Base
belongs_to :page
belongs_to :image
belongs_to :logo
end
Si ese no es el caso, entonces necesita agregar columnas ad_id
a Image
y Logo
.