Hom*_*ith 28 ruby-on-rails factory-bot
我有以下型号:
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
Run Code Online (Sandbox Code Playgroud)
我已经定义了以下工厂:
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
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时:
ad = FactoryGirl.create(:ad)我ActiveModel::MissingAttributeError: can't write unknown attribute ad_id'在广告工厂中决定图像关联的行中出现以下错误.
我在这做错了什么?
Mau*_*res 42
当你说:
has_one :image
Run Code Online (Sandbox Code Playgroud)
Rails希望您ad_id在images表中定义一个字段.鉴于你的协会的组织方式,我假设你有一个image_id和logo_id一对ads表,而不是:
class Ad < ActiveRecord::Base
belongs_to :page
has_one :image
has_one :logo
end
Run Code Online (Sandbox Code Playgroud)
你可能意味着:
class Ad < ActiveRecord::Base
belongs_to :page
belongs_to :image
belongs_to :logo
end
Run Code Online (Sandbox Code Playgroud)
如果不是这样,那么你需要添加ad_id列到两Image和Logo.
如果您在运行规范时遇到此错误,则可能是新添加的字段未在测试环境中迁移。因此使用以下命令将其迁移到测试环境中
rake db:migrate db:test:prepare
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39610 次 |
| 最近记录: |