首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NameError -未定义的局部变量或方法‘`favorites’

NameError -未定义的局部变量或方法‘`favorites’
EN

Stack Overflow用户
提问于 2014-09-23 03:34:38
回答 1查看 832关注 0票数 2

我是新来ruby的。我在user.rb中遇到一个名称错误

代码语言:javascript
复制
NameError - undefined local variable or method `favorites' for #<User:0x007fc0e19a8720>:
  activemodel (4.0.5) lib/active_model/attribute_methods.rb:439:in `method_missing'
  activerecord (4.0.5) lib/active_record/attribute_methods.rb:167:in `method_missing'
  app/models/user.rb:17:in `favorited'
  app/views/favorites/_favorite.html.erb:2:in `_app_views_favorites__favorite_html_erb__4203159933335848505_70233146456940'

这是我的user.rb文件:

代码语言:javascript
复制
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable
  has_many :posts, dependent: :destroy
  has_many :comments
  has_many :votes, dependent: :destroy
  has_many :users, dependent: :destroy
  mount_uploader :avatar, AvatarUploader

  def role?(base_role)
    role == base_role.to_s
  end

  def favorited(post)
    favorites.where(post_id: post.id).first
  end

end

这是我的favorite.rb文件:

类收藏夹< ActiveRecord::Base

代码语言:javascript
复制
has_many :users, dependent: :destroy
has_many :posts, dependent: :destroy

结束

我不明白为什么我得到了名称错误。

EN

回答 1

Stack Overflow用户

发布于 2014-09-23 03:51:30

您的错误为:

代码语言:javascript
复制
NameError - undefined local variable or method `favorites' for #<User:0x007fc0e19a8720>

换句话说,它告诉您正在User实例上调用方法favorites,而该方法没有为该对象类型定义。

考虑到您的user.rb文件既没有用户-收藏夹关联(它会自动为您创建该方法),也没有显式的def favorites方法,这是有意义的。要避免此错误,您需要一个或另一个。

我同意维姆沙的建议--这看起来像是一个关联,对于这种关联,您最好使用Rails的内置关联方法(可能是has_many :favorites),而不是自己编写关联的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25981840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档