浏览 895 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-11-09
请问,为什么我在model类中加入了validates_presence_of :name, :ctiy,:email方法,来验证三个字段,但提交表单的时候,如果不填写这三个字段依然不会提示错误呢?
class User < ActiveRecord::Base attr_accessor :name attr_accessor :city attr_accessor :email attr_accessor :have_ex #whether have experience def initialize(name,email,city,have_ex) @name = name @email = email @city = city @have_ex = have_ex end self.validates_presence_of :name, :ctiy,:email end 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-11-09
楼主以前是弄JAVA的吗,rails好象不是这么写的吧
|
|
| 返回顶楼 | |
|
时间:2007-11-09
class User < ActiveRecord::Base
validates_presence_of :name, :ctiy,:email attr_accessor :name attr_accessor :city attr_accessor :email attr_accessor :have_ex #whether have experience end 不要覆盖initialize 一般新建用User.new或者User.create({}),或者再创建一个另外的方法也行 |
|
| 返回顶楼 | |
|
时间:2007-11-09
目前的问题是,我加了验证方法,去没有被执行。
这里我的疑问是,这个验证方法以及其他几个验证方法是否都只是在执行和数据库相关的操作时,比如保存在数据库中和创建新的实例对象是才激活验证方法。而如果我只是想把模型对象保存的信息简单的显示在一个view页面中,而不操作数据库,这些验证方法是否都不会被调用呢?即使写成:validates_presence_of :name, :ctiy,:email,n=> create 这里用on选项指定在模型对象被创建时候调用验证方法,应该也只是指在对象被存储在数据库之前对象被创建的时候吧? 今天在和一个朋友交流过,他也这么认为,目前我也是这么想的,不知道是否正确,还望朋友们指教。 |
|
| 返回顶楼 | |
|
时间:2007-11-09
个人理解,validates_presence_of方法,仅仅在存入数据库的时候才会调用,如果想要实现ls说的那种情况,需要自己添加验证代码
|
|
| 返回顶楼 | |
|
时间:2007-11-10
try
class User < ActiveRecord::Base validates_presence_of(:name, :on=>[:create, save]) validates_presence_of(:ctiy, :on=>[:create, save]) validates_presence_of(:email, :on=>[:create, save]) attr_accessor :name attr_accessor :city attr_accessor :email attr_accessor :have_ex #whether have experience end ========================= 更简单的办法,还是用 sina2009 的代码,然后 user = User.new(paras[:user]) user.valid? 因为: valid?() Runs validate and validate_on_create or validate_on_update and returns true if no errors were added otherwise false. |
|
| 返回顶楼 | |
|
时间:2007-11-12
validate方法是验证模型的,没有问题,关键是你覆写了模型的初始化方法。应该直接继承ActiveRecord::Base的初始化方法,这样验证才能生效。
|
|
| 返回顶楼 | |
|
时间:2007-11-12
Model的attr_accessor和attributes同样都可以使用AR自带的验证方法
在保存Model实例时AR会自动调用Validate方法,如果需要在未保存情况下验证那就使用 Model.valid? 吧 楼主的用法比较怪异,建议看一下API |
|
| 返回顶楼 | |
|
时间:2007-11-12
感谢各位朋友的帮助,这些天也对此有了更深刻的认识。
|
|
| 返回顶楼 | |






