【发布时间】:2013-11-08 19:09:20
【问题描述】:
我已经这样做了一百万次,但我似乎无法弄清楚为什么它现在不起作用。我有一个 has_one 配置文件的用户模型。配置文件属于用户模型。在我的个人资料控制器中,我试图访问属于用户子集的所有个人资料,但我似乎无法访问。我试过这个:
def index
if params[:tag]
@profiles = Profile.user.tagged_with(params[:tag])
else
@profiles = Profile.all
end
end
我收到方法用户未定义的错误。然而,在视图中,我调用了@profiles.user,它工作正常。我也试过:
def index
if params[:tag]
@profiles = Profile.users.tagged_with(params[:tag])
else
@profiles = Profile.all
end
end
但这不起作用。请帮忙。谢谢。
编辑:
class User < ActiveRecord::Base
has_one :profile
acts_as_taggable
end
class Profile < ActiveRecord::Base
belongs_to :user
end
【问题讨论】:
-
如果关系是 has_one 那么你就可以像第一个例子那样使用 user 了。我很想看看你的模型定义。也很高兴看到您的 tagged_with 方法
-
在 User.rb 和 Profile.rb 中给我们您的模型关联声明。你acts_as_taggable你的模型吗?
-
仅仅因为你有一个
user字段作为你的Profile定义的一部分,并不意味着你在Profile上有类方法user或users。 -
我添加了模型。用户模型有acts_as_taggable。 profile 方法没有,因为它没有与之关联的标签。丹,tagged_with 不是我的方法,它是acts_as_taggable_on gem 的一部分。
-
彼得,刚刚看了加载错误的问题。我看不出与我的问题有任何联系。不过还是谢谢。
标签: ruby-on-rails tags ruby-on-rails-4 rails-activerecord acts-as-taggable-on