[英]Rails: Methods in scopes
我的一種模型具有以下方法:
def remaining_stock
if initial_stock
initial_stock - bought_items
else
0
end
end
在控制器中,我要提取用戶擁有的剩余庫存大於零的所有物品。 簡而言之,類似
@remaining_items = Item.where(:user_id => current_user.id).{somehow specify that remaining stock > 0}
該方法將類似於
def has_remaining_stock
remaining_stock > 0
end
但是我不知道如何將其添加到查詢本身,或者某種類型的范圍中,它會引入has_remaining_stock(我可以使用:conditions進行范圍調整,但不能使用其他方法進行范圍調整)
任何想法表示贊賞。
簡短的答案是,您無法獲得想要的東西。 記住,您正在生成要發送到數據庫以獲取項目的SQL。 SQL不包括按行運行的Ruby,但是您可以使用它來做其他事情。 就像是:
.where("initial_stock = NULL or (initial_stock - bought_items) > 0")
應該管用。 您可以將其打包為模型的作用域,以獲得更清晰的語義。 您只需要在SQL條件下表達該函數即可。
我想您可以執行以下操作:
scope :has_remaining_stock, where("(initial_stock - bought_items) > 0)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.