ruby-on-rails - rails : how to make class method scope to handle nil arguments

标签 ruby-on-rails ruby-on-rails-3 activerecord

我开始使用类方法作用域,因为我需要将一些参数传递到作用域中。以 Rails 指南为例:

  def self.1_week_before(time)
    where("created_at < ?", time)
  end

但是,在我的网站中,有时参数可能为零,在这种情况下,我想绕过该范围并转到链中的下一个范围。

我在方法中添加了if条件:

  def self.1_week_before(time)
    if time
      where("created_at < ?", time)
    end
  end

但是,当我在范围链中间使用此方法时,它将给出 nil:NilClass 错误的未定义方法。我该如何解决这个问题?

最佳答案

这会返回nil,因此当您链接时会收到错误:

def self.1_week_before(time)
  if time
    where("created_at < ?", time)
  end
end

为了防止这种情况,您可以返回scoped:

def self.1_week_before(time)
  if time
    where("created_at < ?", time)
  else
    scoped
  end
end

关于ruby-on-rails - rails : how to make class method scope to handle nil arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628834/

相关文章:

ruby-on-rails - Ruby on Rails 中的枚举

javascript - Ruby on Rails 如何将数据从 Controller 传递到 html 中的 javascript

ruby-on-rails - 为什么我在一个模型上的 rspec Rails 测试需要 10 分钟?! (Rails 3.2/rspec 2/Guard/spork)

ruby-on-rails - 如何追踪 Rails 应用程序中的内存泄漏?

c# - CaSTLe ActiveRecord - 总是更新 child ,为什么?

ruby-on-rails - 删除分配给变量的旧记录

ruby-on-rails - rails 生成模型 Investor - 收到错误 "The name ' Investor' 要么已经使用...”

sql - 查询中的 Postgres/Rails 复数问题

ruby-on-rails - 我将如何解析此 url 以获取 id?

ruby-on-rails - 如何在 Rails 3.x 中提取多个属性?