ActiveModel::MissingAttributeError: can't write unknown attribute `ad_id' with FactoryGirl
When you say:
has_one :image
Rails expects you to define an ad_id
field at the images
table. Given the way your associations are organised, I assume you have an image_id
and a logo_id
a the ads
table so instead of:
class Ad < ActiveRecord::Base
belongs_to :page
has_one :image
has_one :logo
end
You probably mean:
class Ad < ActiveRecord::Base
belongs_to :page
belongs_to :image
belongs_to :logo
end
If that's not the case then you need to add ad_id
columns to both Image
and Logo
.
I ran into this same error and it took a while to figure out a fix. Just in case this helps someone else in the future, here's my scenario and what worked for me. Class names have been changed as this is for work:
I had 2 namespaced models:
Pantry::Jar
has_many :snacks, class_name: Pantry::Snack
accepts_nested_attributes_for :snacks
Pantry::Snack
belongs_to :pantry_jar, class_name: Pantry::Jar
When I would create a new jar with new snacks, I would get:
ActiveModel::MissingAttributeError: can't write unknown attribute `jar_id'
The fix was to change the has_many
to be more explicit about the foreign key:
has_many :snacks, class_name: Pantry::Snack, foreign_key: :pantry_jar_id