我试图只查询数据库中的对象,这些对象的布尔属性为" 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
我觉得一切都设置正确,我没有收到任何错误,但我的索引页面是空白的,因为没有正确查询任何项目。
答案 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中的范围界定。