1

рельсы новичку здесь, я создал has_many Assocation для категории и продукта, но получаю сообщение об ошибке при проверке отношений в консолиhas_many ассоциации Rails4.2

2.2.0 :004 > Category.last.products 
    Category Load (0.6ms) SELECT "categories".* FROM "categories" ORDER BY "categories"."id" DESC LIMIT 1 
NoMethodError: undefined method `products' for nil:NilClass 

Я использую Rails 4.2.0 с рубином 2.2 .0

Категория модель

class Category < ActiveRecord::Base 
    has_many :products 
end 

модель продукта

class Product < ActiveRecord::Base 
    belongs_to :category 
end 

Модель продукта

class CreateProducts < ActiveRecord::Migration 
    def change 
    create_table :products do |t| 
     t.string :product_name 
     t.float :price, precision: 5, scale: 2, default: 0.00 
     t.boolean :is_available, default: true 
     t.integer :category_id 
     t.string :description 
     t.integer :quantity 

     t.timestamps null: false 
    end 
    end 
end 

ответ

0

Похоже, у вас нет какой-либо объект категории.

Category.last.products

NoMethodError: undefined method `products' for nil:NilClass

4

Проблема заключается в том, что у вас нет записей в Category модели.

Когда вы вызываете Category.last, вы получаете нулевой объект, потому что у вас нет записей, а когда вы вызываете products, он вызывается на ноль-объекте.

Сначала нужно создать запись в базе данных, с Category.create, то вы можете позвонить Category.last и это даст вам последнюю запись, а затем, когда products вызывается он будет называться на последнем category, и не даст вам неопределенный метод нулевой объект.

+0

Спасибо, Это сработало. –

Смежные вопросы