如何从儿童协会获得最高价值

时间:2016-02-08 01:54:43

标签: ruby-on-rails

我有一个包含很多项目的订单模型。

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值而是比较枚举字符串值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您应该使用maximum在数据库中执行查询,使用存储的整数值而不是ActiveRecord - 包装的记录,您将在符号中再次执行比较:

def set_status
  self.item_status = self.items.maximum(:item_status)
end