1

У меня есть некоторые модели в моем приложении, и я пытаюсь сохранить данные, но я получил сообщение об ошибке:Rails реляционной модели MissingAttributeError

ActiveModel :: MissingAttributeError (не может писать неизвестный атрибут product_id): приложения/контроллеры/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 (can't write unknown attribute product_id): app/controllers/admin_controller.rb:27:in `create_product'

Я не могу понять, что происходит

какие-нибудь идеи?

Благодаря

+1

Поскольку ошибка исходит из admin_controller, может вы также можете включить этот код? –

+0

Является ли функция объединением для категории и модели продукта? – Darpa

ответ

2

Если вы посмотрите на ошибки, это ясно говорит

ActiveModel::MissingAttributeError (can't write unknown attribute product_id)

так что вы не имеете PRODUCT_ID поле и глядя на ваших ассоциаций и миграцию функций таблицы, Вы забыли для добавления поля product_id в таблицу функций.

FIX:

Чтобы добавить PRODUCT_ID поле в таблице функций необходимо создать новую миграцию, а затем перенести его в БД:

rails g migration AddProductIdToFeatures product_id:integer 
rake db:migrate 
Смежные вопросы