2017-05-08 45 views
1

我試圖從數據庫的布爾屬性「in_season」返回true,它不工作的對象。如何根據布爾屬性在rails中進行查詢?

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

您正在詢問一個布爾值,但傳遞一個字符串用於比較。 where(「in_season =?」,true)或where(in_season:true)應該爲你工作。 – Phobos

回答

2

您需要修復語法。你的錯誤是你傳遞一個字符串"true",而你想傳遞布爾值true

def self.in_season 
    where(in_season: true) 
end 

它更Railsy使用scope這樣的需求:

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

瞭解更多關於Rails Guides on scopes作用域。

+0

工作!太感謝了! – goodjobbin85