2011-12-12 124 views
0

我想在我的模型上创建一个属性,用于升序或降序的符号。但是,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

要验证order_ascends:

1: it is present 
2: it is a boolean 

顺序的方法是你正在使用的接口,以order_ascends什么。

+0

嗯,这有道理,但“有效?”仍然是真实的。 – LandonSchropp

+0

哎呀,我只是在愚蠢的看着错误的测试。谢谢您的帮助。 – LandonSchropp