我有一个包含很多项目的订单模型。
app/models/order.rb
class Order < ActiveRecord::Base
has_many :items
before_save :set_status
enum item_status: [:one, :two, :three]
private
def set_status
self.items.each do |i|
self.item_status = i.item_status if i.item_staus > self.item_status
end
end
end
两个模型都具有相同的“item_status”枚举和属性。
我认为比较不起作用,因为它不是比较实际的INT值而是比较枚举字符串值。
我该如何解决这个问题?
答案 0 :(得分:2)
您应该使用maximum
在数据库中执行查询,使用存储的整数值而不是ActiveRecord
- 包装的记录,您将在符号中再次执行比较:
def set_status
self.item_status = self.items.maximum(:item_status)
end