gpt4 book ai didi

ruby-on-rails - NameError 未初始化的常量 Model::Object

转载 作者:行者123 更新时间:2023-12-03 23:19:24 25 4
gpt4 key购买 nike

我是 ruby​​ on rails 的新手。我的错误是

NameError in ReviewsController#create
uninitialized constant User::Review
Extracted source:
@review = current_user.reviews.build(review_params)

我阅读了其他堆栈溢出问题,这些问题通常是错误名称的错误或忘记belongs_to 或has_many,但我相信我已经正确设置了关系。我正在使用 gem 设计来处理用户和登录/注册等

Reviews.rb
class Reviews < ActiveRecord::Base

belongs_to :user
belongs_to :renters

end

用户.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

has_many :reviews
end

Reviews_Controller.rb
class ReviewsController < ApplicationController
before_action :set_renter
before_action :authenticate_user!

def new
@review = Reviews.new(renters: @renter)
end

def create
@review = current_user.reviews.build(review_params)
@review.renter = @renter
@review.save
redirect_to @renter
end

private
def set_renter
@renter = Renters.find(params[:renter_id])
end

def review_params
params.require(:reviews).permit(:comment, :rating)
end
end

Renters 模型工作正常,类似的代码我必须让一个新的 Renter 工作,所以我不确定出了什么问题。

最佳答案

ActiveRecord::Base 类通常以单数命名。

这意味着您的类应该命名为 Review 并且它应该存储在一个名为 models/review.rb 的文件中(但仍然将其条目存储在 reviews 数据库表中)。

如果您不想遵循此约定,则必须明确告诉 Rails 在 belongs_tohas_many 关联的定义中该类的名称不同。

关于ruby-on-rails - NameError 未初始化的常量 Model::Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com