这应该很简单。通过询问可能会让自己感到尴尬。 :)
虽然我还是ruby / rails的新手。
如果满足条件,我想摆脱循环
所有商品售出后销售完成。我希望能够使用sale.is_complete?
。
class Sale < ActiveRecord::Base
has_many :items
def is_complete?
items.each do |item|
# as soon as i encounter an unsold item, i want to return false to is_complete
# item.is_sold? will return true or false
end
end
end
答案 0 :(得分:7)
在这种情况下,循环不是最好的方法。
def is_complete?; items.all?(&:is_sold?) end
答案 1 :(得分:3)
也许不那么尴尬:
def is_complete?
items.each do |item|
if not item.is_sold? then return false
end
return true
end
答案 2 :(得分:3)
我认为你不想像这样循环每个项目。这将是非常低效的。更好的方法是检查未售出物品的数量。例如,假设Items Table
有一个名为sold
的列,用于存储true或false值。然后我们可以这样做:
def is_complete?
items.where(sold: false).present?
end