如何在rails中基于布尔属性进行查询?

时间:2017-05-08 21:26:13

标签: ruby-on-rails ruby

我试图只查询数据库中的对象,这些对象的布尔属性为" in_season"返回true,它不起作用。

class Item < ApplicationRecord
validates :name, presence: true, uniqueness: true
validates :price, presence: true, numericality: true
validates :quantity, presence: true, numericality: { only_integer:    true }
validates :description, presence: true


def self.in_season
  where("in_season = ?", "true")
end

class ItemsController < ApplicationController

def index
  @items = Item.in_season
end

end

我觉得一切都设置正确,我没有收到任何错误,但我的索引页面是空白的,因为没有正确查询任何项目。

1 个答案:

答案 0 :(得分:2)

您需要修复语法。你的错误是你传递了一个字符串"true",而你想要传递一个布尔值true

def self.in_season
  where(in_season: true)
end

使用scope来满足这些需求的更多Railsy:

scope :in_season, -> { where(in_season: true) }

详细了解Rails Guides on scopes中的范围界定。