保存前的非阻塞数据验证

时间:2011-03-14 10:18:07

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

我想在保存到我的rails应用之前验证数据。 如果数据不符合验证标准,则无法保存并且用户未收到警告。

实际上我在相关的模型文件中有这个:

class Product < ActiveRecord::Base
    belongs_to :content
    before_validation :strip_whitespace  
    private
        def strip_whitespace
            self.label = self.label.strip
            self.price = self.price.strip
        end
end

我在其他模特中尝试过类似的东西:

class Content < ActiveRecord::Base
    belongs_to :user
    has_many :products, :dependent => :destroy
    accepts_nested_attributes_for :products, :reject_if => :all_blank
end

[编辑]

我最后将此行更改为:

class Content < ActiveRecord::Base
    belongs_to :user
    has_many :products, :dependent => :destroy
    accepts_nested_attributes_for :products, :reject_if =>  proc {|attributes| 
        attributes['label'].blank?
        attributes['price'].blank?
        attributes['img_src'].blank?
        attributes['link'].blank?
    }
end

它有效! 但是还有另一种解决方案来列出属性空白?条件?

1 个答案:

答案 0 :(得分:1)

您的模型中没有任何验证。 浏览此链接

http://guides.rubyonrails.org/active_record_validations_callbacks.html