Ruby on rails Admin::Recommandations#索引中的NameError
我的ActiveAdin接口上有多个Resources,其中一个在我进入索引视图“/admin/recommandations”时返回错误,并显示以下消息:Ruby on rails Admin::Recommandations#索引中的NameError,ruby-on-rails,ruby-on-rails-3,activeadmin,Ruby On Rails,Ruby On Rails 3,Activeadmin,我的ActiveAdin接口上有多个Resources,其中一个在我进入索引视图“/admin/recommandations”时返回错误,并显示以下消息: NameError in Admin::Recommandations#index Showing /home/charles/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/gems/activeadmin-0a5a15b88bff/app/views/active_admin/res
NameError in Admin::Recommandations#index
Showing /home/charles/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/gems/activeadmin-0a5a15b88bff/app/views/active_admin/resource/index.html.arb where line #2 raised:
uninitialized constant Recommandation::Writer
推荐功能很简单:一个用户可以通过推荐给另一个用户打分。在我的推荐模型中,我有一个用户(被评分的用户)和一个作者(写推荐的用户)
推荐模式:
class Recommandation < ActiveRecord::Base
before_validation:check_models
belongs_to :user
validates :user_id, presence: true
validates_associated :user
# Il s'agit de l'utilisateur qui inscrit la recommandation
has_one :writer, :foreign_key => "writer_id"
validates :writer_id, presence: true
validates_associated :writer
validates :modele, presence: true
##
# @return L'origine liée
def writer
if self.writer_id != nil
User.find(self.writer_id)
end
end
类推荐“writer\u id”
验证:writer\u id,状态:true
验证关联的\u:编写器
验证:modele,状态:true
##
#@return L'origine liée
def编写器
如果self.writer_id!=无
User.find(self.writer\u id)
结束
结束
我可以使用“/admin/recommandations/1”访问我的每个推荐资源,并且有一个作者是用户,因此我不知道问题出在哪里。如果您选择命名与模型名称不同的关联,则应指定
类名
选项:
has_one :writer, foreign_key: :writer_id, class_name: User
此外,如果数据库设置正确,此方法:
def writer
if self.writer_id != nil
User.find(self.writer_id)
end
end
是多余的,因为Rails将从关联中为您处理
writer
。如果您选择命名与模型名不同的关联,则应指定类名
选项:
has_one :writer, foreign_key: :writer_id, class_name: User
此外,如果数据库设置正确,此方法:
def writer
if self.writer_id != nil
User.find(self.writer_id)
end
end
是多余的,因为Rails将从关联中为您处理
writer
。看起来您使用了推荐::writer
而不是推荐。writer
?如果是这样,请检查类和实例方法之间的差异。除非@NilsLandt正确,否则您可能需要明确指定类名:有一个:writer,外键:“writer\u id”,类名:'::writer'
<代码>:告诉它在根命名空间中查找类。我在代码中的任何地方都不使用推荐::编写器。在插入class\u name:'::Writer'
后,我得到了相同的错误,但是使用Writer
而不是Recommandation::Writer
看起来您使用了Recommandation::Writer
而不是Recommandation.Writer
?如果是这样,请检查类和实例方法之间的差异。除非@NilsLandt正确,否则您可能需要明确指定类名:有一个:writer,外键:“writer\u id”,类名:'::writer'
<代码>:
告诉它在根命名空间中查找类。我在代码中的任何地方都不使用推荐::编写器。在插入class\u name:'::Writer'
之后,我得到了相同的错误,但是使用了Writer
而不是Recommandation::Writer