虚拟属性Rails模型

时间:2011-12-12 05:10:57

标签: ruby-on-rails ruby

我想在我的模型上创建一个带有升序或降序符号的属性。但是,RoR不允许在数据库中使用枚举类型,因此我创建了一个布尔属性,然后在我的模型上添加了一个属性。这适用于除验证之外的所有内容,我似乎无法开始工作。 container.valid?总是返回true,即使尚未设置order。还有什么想法?

class Container < ActiveRecord::Base
  attr_accessible :score_order
  validates :order, :presence => true

  def order
    return order_ascends ? :ascending : :descending
  end

  def order=(order)
    case order
    when :ascending
        self.order_ascends = true
    when :descending
        self.order_ascends = false
    else
        throw :unexpected_argument
    end
  end
end

1 个答案:

答案 0 :(得分:1)

您想要验证order_ascends:

1: it is present
2: it is a boolean

订购方法正是您用来与order_ascends接口的方法。