我的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资源,并且有一个作者是用户,所以我不明白问题出在哪里。
答案 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
。