1

什么可能导致 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>
4

1 回答 1

1

范围仅在 ActiveRecord 模型上定义类方法。调用它的正确方法是直接在 User 模型上。User.pets而不是 User 的实例@user.pets

您可以做的是创建一个在 User 实例上调用的方法。

   def pets
     User.joins(:dogs).joins(:cats).order("created_at desc")
   end

因此,@user.pets是允许的。

于 2012-05-10T06:05:37.873 回答