ruby on rails:before_validation

时间:2013-07-02 09:06:03

标签: ruby-on-rails

在domainpost.rb中

我有这个:

class Domainpost < ActiveRecord::Base
  attr_accessible :content,  :additiona, :registerdate, :expiredate, :registerin, :price 

  belongs_to :user
  before_save { |domainpost| domainpost.content = content.downcase }

  before_validation :pricecheck

  validates :price, allow_blank: false, presence: true

  default_scope order: 'domainposts.created_at DESC'

  def pricecheck
    if  price.blank?
    price = 'no price'
  end
end

它不起作用 当保存为空白时,帖子中的价格为空白时, 知道我做错了吗?

2 个答案:

答案 0 :(得分:4)

它不起作用,因为您设置了一个局部变量,而不是设置price实例的属性Domainpost。相反,你应该这样做:

def pricecheck
  self.price = 'no price' if price.blank?
end

答案 1 :(得分:1)

作为@Merek Lipka和@muttonlamb的答案,您可以尝试这些方法,但我建议在您的数据库端定义default value

就像您在价格字段中的迁移一样,只需执行此操作

t.[price_data_type],:price,:default => "Your Default value"

嗯,这将照顾你相信的模型