Admin::Recommandations#index 中的名称错误

NameError in Admin::Recommandations#index

我的 ActiveAdin 界面上有多个资源,其中之一 returns 当我进入索引视图“/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/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

我可以使用“/admin/recommandations/1”访问我的每个 Recommandation 资源,并且有一个作者是用户,所以我不明白问题出在哪里。

如果您选择命名与模型名称 不同 的关联,您应该指定 class_name 选项:

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