浏览 1229 次
|
锁定老贴子 主题:rails的校验问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-02-28
正在看 rails 的教程,上面讲的将校验放到了 model里,
但实际情况可能是两个模块都会使用这个model,但是对字段的校验规则不相同, 想问问怎么才能把校验放到 controller里呢? 另外 rails默认的校验方法所显示的字符串,怎么才能修改呢? 谢谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
在model里建两个方法,在controller里调用。毕竟validation是model的职责。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
谢谢!以下是代码,但是提示错误。。。
class Product < ActiveRecord::Base public def createValidate validates_presence_of :title, :description, :image_url end end class AdminController < ApplicationController def create Product.createValidate 。。。其他省略 end end 错误信息是: E:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/base.rb:1233:in `method_missing' #{RAILS_ROOT}/app/controllers/admin_controller.rb:25:in `create' E:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/base.rb:1233:in `method_missing' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:in `send' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:in `perform_action_without_filters' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:632:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:638:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:438:in `call' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:637:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue' E:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:83:in `perform_action' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:in `send' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:in `process_without_filters' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:624:in `process_without_session_management_support' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/session_management.rb:114:in `process' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:330:in `process' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:in `dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:113:in `handle_dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:79:in `service' E:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' E:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' E:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' E:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' E:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each' E:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:63:in `dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/servers/webrick.rb:59 E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in `new_constants_in' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/server.rb:39 E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in `new_constants_in' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' script/server:3 E:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.1/lib/active_record/base.rb:1233:in `method_missing' #{RAILS_ROOT}/app/controllers/admin_controller.rb:25:in `create' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:in `send' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:in `perform_action_without_filters' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:632:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:638:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:438:in `call' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:637:in `call_filter' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue' E:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:83:in `perform_action' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:in `send' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:in `process_without_filters' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:624:in `process_without_session_management_support' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/session_management.rb:114:in `process' E:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:330:in `process' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:in `dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:113:in `handle_dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:79:in `service' E:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' E:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' E:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' E:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' E:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each' E:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start' E:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:63:in `dispatch' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/servers/webrick.rb:59 E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in `new_constants_in' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/server.rb:39 E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' E:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in `new_constants_in' E:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in `require' script/server:3 Request Parameters: {"commit"=>"Create", "product"=>{"image_url"=>"", "price"=>"", "title"=>"", "date_available(1i)"=>"2007", "description"=>"", "date_available(2i)"=>"2", "date_available(3i)"=>"28", "date_available(4i)"=>"13", "date_available(5i)"=>"17"}} Show session dump --- flash: !map:ActionController::Flash::FlashHash {} Response Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"} |
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
已经知道怎么回事了,谢谢!
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
但是如何修改rails的默认错误信息呢?例如我想改成中文的。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
问之前也许你该搜索下,看这个帖子:http://www.javaeye.com/post/150597
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
如果两个的校验规则不同,应该是两个不同的model阿,用一个Base的Model,然后两个子类,实现不同的validation
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
刑天战士 写道 如果两个的校验规则不同,应该是两个不同的model阿,用一个Base的Model,然后两个子类,实现不同的validation
但他们是同一个表的阿。。。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
如果仅仅是在不同时刻校验,可以使用hook来做。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-28
yananay 写道 刑天战士 写道 如果两个的校验规则不同,应该是两个不同的model阿,用一个Base的Model,然后两个子类,实现不同的validation
但他们是同一个表的阿。。。 ActiveRecord貌似可以改变默认的表名的……java用惯了,很多地方转变不过来…… |
|
| 返回顶楼 | |








