使用示波器时,什么可能导致rails应用程序出现无方法错误?
我有一个基本的用户类,有猫和狗。我需要组合查询并按创建日期对它们进行排序。最终,各个查询将更加复杂。
class User < ActiveRecord::Base
has_many :dogs
has_many :cats
scope :pets, joins(:dogs).joins(:cats).order("created_at desc")
在视图中
<%= render @user.pets%>
导致无方法错误
undefined method `pets' for #<User:0x00000106370cb0>
答案 0 :(得分:1)
范围仅定义ActiveRecord模型上的类方法。调用它的正确方法是直接在User模型上。 User.pets
,而不是用户@user.pets
的实例。
您可以做的是创建一个在User实例上调用的方法。
def pets
User.joins(:dogs).joins(:cats).order("created_at desc")
end
因此,@user.pets
是允许的。