轨道错误:#<用户:0x00007faaa8c42700>的未定义方法"产品"是你的意思是? 产品 产品=



我正在尝试开发一个具有 3 个模型的Shopping application,即User(Devise)ProductBatch。我在UserProduct之间建立了has_many关联,并创建了一个User(signed up in Devise)。然后,我将关联更改为has_and_belongs_to_many,并创建了一个迁移来创建联接表。我已经按照这个答案 https://stackoverflow.com/a/57017241/9110386 将Product添加到current_user。 然后我删除了我的用户帐户并尝试注册,但它显示了这样的错误。 NoMethodError in Devise::RegistrationsController#create #的未定义方法"产品"是您的意思是?产品展示 产品展示=

用户型号:


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中取出.怎么做?

提前谢谢。

您在用户模型中留下了旧的验证。

删除应用程序/模型/用户.rb 文件中的此行validates_length_of :product, maximum: 10

您的错误是标记了设计注册控制器的创建方法。你可能在那里留下了对user.product的引用,而用户有复数的产品。

相关内容

  • 没有找到相关文章

最新更新