嵌套验证 - 模型

时间:2014-06-27 22:26:01

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我有两个链接模型(简化):

广告:

class Ad < ActiveRecord::Base
has_many :propositions
validates :pricemin
validates :pricemax
...

命题:

class Proposition < ActiveRecord::Base
belongs_to :ad
attr_accessible :price_proposition
...

我试图将price_proposition(在&#34;命题&#34;模型中)的限制添加到&#34; pricemin&#34;之间。和&#34; pricemax&#34;。

我怎么能这样做?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

通过Javascript进行客户端验证绝对是一种方法。但是如果你想进行服务器端验证,你可以这样做:

class Proposition < ActiveRecord::Base

  belongs_to :ad
  attr_accessible :price_proposition

  validate :price_proposition_in_range

  def price_proposition_in_range
    pricemin = self.ad.pricemin
    pricemax = self.ad.pricemax
    if self.price_proposition < pricemin || self.price_proposition > pricemax
      errors.add(:price_proposition, "Must be between #{pricemin} and #{pricemax}")
    end
  end

  .
  .
  .
end

当然,您可以在方法中添加进一步的检查,具体取决于您是否允许空白等等。