Admin :: Recommandations中的NameError #index

时间:2016-09-14 12:23:20

标签: ruby-on-rails ruby-on-rails-3 activeadmin

我的ActiveAdin界面上有多个ressource,当我使用以下消息进入Index视图“/ 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资源,并且有一个作者是用户,所以我不明白问题出在哪里。

1 个答案:

答案 0 :(得分:0)

如果您选择从模型名称中命名不同的关联,则应指定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