ruby-on-rails - 如何从类方法返回未更改的 AR 关系

标签 ruby-on-rails

我有这样的代码:

class Item < ActiveRecord::Base
  class << self
    def for_category(c)
      if c
        return where(:category_id => c.id)
      else
        return self
      end
    end
  end
end

我需要这样调用它:

Item.where("created_at > ?", Time.now - 1.week).for_category(@category)

@category 可以为 null 也可以不为 null。在类别为空的情况下,我希望该方法简单地通过并返回不变的关系。当然,return self 只是返回 Item 类。

执行此操作的正确方法是什么?

最佳答案

您是否试图返回作用域(而不是类本身)以进行进一步的作用域操作?如果是这样,那么像下面这样的东西应该可以工作:

class Item < ActiveRecord::Base
  class << self
    def for_category(c)
      if c
        return where(:category_id => c.id)
      else
        return scoped
      end
    end
  end
end

HTH

关于ruby-on-rails - 如何从类方法返回未更改的 AR 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501703/

相关文章:

ruby-on-rails - 使用 Virtus 的 Rails 表单对象 : has_many association

php - PHP 有像 ruby​​ gem bundler 吗?

Mysql 结果按每个用户唯一的列表排序

ruby-on-rails - 哪个是目前最流行的 Ruby on Rails 授权 gem/插件?

ruby-on-rails - 使用 Capybara 和 Selenium on Rails 5.1 应用程序(从 Rails 4 升级)的系统测试设置问题

javascript - 如何防止发送 ajax 调用两次

mysql - 从输入表单查询数据库 [rails]

jquery - Rails 中的 Ajax 调用重复

ruby-on-rails - 什么会导致与 APNS 的连接间歇性断开连接?

sql - 有效地找到 "record high"值