[英]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.