我的应用程序中有一些模型,我试图保存数据,但是我收到了错误:
ActiveModel :: MissingAttributeError(无法写入未知属性product_id
):
app / controllers / admin_controller.rb:27:在`create_product'
我有3个模特
类别模型
class Category < ActiveRecord::Base
has_many :features
has_many :products
end
迁移:
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name, null: false
t.boolean :active, null: false, default: false
t.timestamps null: false
end
end
特征模型
class Feature < ActiveRecord::Base
has_and_belongs_to_many :categories
has_and_belongs_to_many :products
end
移植
class CreateFeatures < ActiveRecord::Migration
def change
create_table :features do |t|
t.belongs_to :category, index:true
t.string :name, null: false
t.timestamps null: false
end
end
产品型号
class Product < ActiveRecord::Base
belongs_to :category
has_many :features
end
移植
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.belongs_to :category, index:true
t.string :name, null: false
t.text :rating, null: false
t.timestamps null: false
end
end
当我尝试保存产品时出现此错误
ActiveModel :: MissingAttributeError(无法写入未知属性
product_id
): app / controllers / admin_controller.rb:27:在`create_product&#39;
我无法弄清楚发生了什么
任何想法?
由于
答案 0 :(得分:2)
如果你看一下你的错误,它会清楚地说明
ActiveModel :: MissingAttributeError(无法写入未知属性product_id)
因此您没有product_id字段并查看您的关联和功能表迁移,您忘记在功能表中添加product_id字段。
FIX:
要在功能表中添加product_id字段,您需要创建一个新的迁移,然后将其迁移到db:
rails g migration AddProductIdToFeatures product_id:integer
rake db:migrate