六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 44|回复: 0

给Non-ActiveRecord Objects进行validate

[复制链接]

升级  76%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
164
 楼主| 发表于 2013-2-7 15:13:00 | 显示全部楼层 |阅读模式
对于非ActiveRecord对象的Validation,我们不能简单的include ActiveRecord::Validations
我们需要写一个module,放到lib下面,创建一个validateable.rb
module Validateable  [:save, :save!, :update_attribute].each{|attr| define_method(attr){}}  def method_missing(symbol, *params)    if(symbol.to_s =~ /(.*)_before_type_cast$/)      send($1)    end  end  def self.append_features(base)    super    base.send(:include, ActiveRecord::Validations)  endend 然后在你的model下面
class Logo < ActiveRecord::Base  include Validateable  attr_accessor :size  validates_presence_of :size  validates_presence_of :name    file_column :photo, :magick => {     :versions => { "thumb" => "235x90>", "medium" => "640x480>" }  }end然后在页面
<%= error_messages_for :logo %><% form_for :logo,@logo,:url => {:action => :create},:html => {:multipart => true} do |f| %>  name:<%= text_field :logo, :name %><br>   size:<%= f.text_field :size %>  <label>照片:</label>  <%= file_column_field 'logo', 'photo' %><br>  <%= submit_tag "提交"  %><% end %> 最后空白提交,报错
There were problems with the following fields:

  • Name can't be blank
  • Size can't be blank
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表