如何验证基于关联模型计算的数据

时间:2010-01-02 20:17:58

标签: ruby-on-rails ruby activerecord

我有一个帖子模型,其中包含了一个reposts和has_one赞助商。用户可以在创建帖子时购买转贴和赞助帖子。我希望最低购买量(转发和赞助购买的总和)至少为1美元。所以我想在帖子模型中验证这一点,但我无法弄清楚如何编写这样的验证规则。这是我的帖子模型:

class Post < ActiveRecord::Base
  has_one :repost
  has_one :sponsor

任何帮助都非常感谢。

由于

1 个答案:

答案 0 :(得分:1)

你需要一个自定义验证器...这只是为了给你一个基本的想法,因为我不知道你的模型属性究竟是什么。

validate :minimum_purchase

protected

def minimum_purchase
  unless ((self.repost.try(:purchase).to_i + self.sponsor.try(:purchase).to_i) == 100)
    self.errors.add_to_base("You need to purchase at least $1!")
  end
end