gpt4 book ai didi

mysql - 什么会导致 Rails 作用域抛出 NoMethodError

转载 作者:行者123 更新时间:2023-11-29 00:45:56 26 4
gpt4 key购买 nike

什么会导致 Rails 应用程序在使用范围时出现无方法错误?

我有一个包含猫和狗的基本用户类。我需要合并查询并按创建日期对它们进行排序。最终,单个查询将变得更加复杂。

    class User < ActiveRecord::Base
has_many :dogs
has_many :cats

scope :pets, joins(:dogs).joins(:cats).order("created_at desc")

在 View 中

    <%= render @user.pets%>

导致无方法错误

    undefined method `pets' for #<User:0x00000106370cb0>

最佳答案

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

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

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

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

关于mysql - 什么会导致 Rails 作用域抛出 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10528003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com