我的一个模型上有以下方法:
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(我的范围可以:条件,但不是其他方法)
任何想法都赞赏。
答案 0 :(得分:0)
简短的回答是你无法得到你想要的东西。请记住,您正在生成要发送到数据库以获取项目的SQL。 SQL不包括每行运行的Ruby,但您可以使用它来执行其他操作。类似的东西:
.where("initial_stock = NULL or (initial_stock - bought_items) > 0")
应该有效。您可以将其打包为模型中的范围以获得更清晰的语义。您只需要在SQL条件下表达该函数。
答案 1 :(得分:0)
我认为你可以这样做如下:
scope :has_remaining_stock, where("(initial_stock - bought_items) > 0)")