Я пытаюсь разработать Shopping application
, в котором есть 3 модели, а именно User(Devise)
, Product
и Batch
. Я создал ассоциацию has_many
между User
и Product
и создал User(signed up in Devise)
. А затем я изменил ассоциацию на has_and_belongs_to_many
и создал миграцию для создания таблицы соединения. Я выполнил этот ответ { ссылка }, чтобы добавить Product
к current_user
. Затем я удалил свою учетную запись пользователя и попытался зарегистрироваться, но выдает такую ошибку. NoMethodError в Devise :: RegistrationsController # создать неопределенный метод `product 'для # Вы имели в виду? продукты продукты =
Модель пользователя:
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
has_and_belongs_to_many :products, :dependent => :destroy
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates_length_of :product, maximum: 10
end
Модель продукта:
class Product < ApplicationRecord
belongs_to :batch
has_and_belongs_to_many :user
validates :name, presence: true
validates_associated :user
end
Контроллер продукта
class ProductsController < ApplicationController
before_action :authenticate_user!
def index
@products = Product.all
end
def show
@product = Product.find(params[:id])
end
def new
@product = Product.new
end
def edit
end
def create
end
def update
end
def destroy
end
def add_cart
product = Product.find(params[:product_id])
#current_user.products << product
#current_user.products << product unless current_user.products.include?(product)
if current_user.products.include?(product)
redirect_to products_path, notice: "Already in your cart"
else
current_user.products << product
redirect_to products_path, notice: "Added to cart"
end
end
end
Что я здесь не так делаю. И еще хочу удалить Product
из корзины, уничтожив его из current_user
. Как это сделать?
Заранее спасибо.