NoMethodError: неопределенный метод `Categories 'для # <Product: 0x00000000070a9810> - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь добавить категории для некоторых продуктов в Ruby on Rails, но получаю сообщение об ошибке: NoMethodError: неопределенный метод `Categories 'для #

Вот мой товар.рб:

 class Product < ApplicationRecord

  validates :title, presence: true

  has_many :product_categories
  has_many :categories, through :product_categories
 end

запись приложения категории продукта:

class ProductCategory < ApplicationRecord

  belongs_to :product
  belongs_to :category

end

и category.rb:

class Category < ApplicationRecord
  has_many :product_categories
  has_many :products, through :product_categories
end

На интерактивной оболочке ruby ​​я даю следующие команды:

irb(main):006:0> Product.second!
Product Load (0.5ms)  SELECT  "products".* FROM "products" ORDER BY 
"products"."id" ASC LIMIT ? OFFSET ?  [["LIMIT", 1], ["OFFSET", 1]]
=> #<Product id: 2, title: "bread", description: "with glutein", price: 
0.6e0, created_at: "2019-01-13 19:42:45", updated_at: "2019-01-13 
19:42:45">
irb(main):007:0> product= _
=> #<Product id: 2, title: "bread", description: "with glutein", price: 
0.6e0, created_at: "2019-01-13 19:42:45", updated_at: "2019-01-13 19:42:45">
irb(main):008:0> product = _

=> #<Product id: 2, title: "bread", description: "with glutein", price: 
0.6e0, created_at: "2019-01-13 19:42:45", updated_at: "2019-01-13 19:42:45">
<duct.categories.create!(title: "Bread")
NoMethodError: undefined method `categories' for 

Может ли кто-нибудь помочь мне понять, почему появляется эта ошибка? Я следую этому уроку https://www.youtube.com/watch?v=TwoafJC7vlw, и, похоже, он отлично работает там.

1 Ответ

0 голосов
/ 14 января 2019

В модели Product измените has_many :categories, through :product_categories на has_many :categories, through: :product_categories. Вам нужно добавить двоеточие после through. То же самое в Category модели. Это должно решить ошибку.

Кроме того, у вас есть некоторые другие синтаксические ошибки / опечатки, например, в модели продукта validates записывается как valitates.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...