Ruby on rails 如何在rails中验证select_日期

Ruby on rails 如何在rails中验证select_日期,ruby-on-rails,ruby,validation,ruby-on-rails-4,Ruby On Rails,Ruby,Validation,Ruby On Rails 4,rails的初学者在这里,我尝试允许我公司网站的用户输入他们的生日,并选择一个日期。 在我输入无效日期(如2月31日)之前,一切正常。它给了我一个错误,说日期无效。 我希望在不向配置中添加gem的情况下捕获错误,但是对我来说它很模糊,而且我在过去两天中尝试的所有操作都没有成功 这是我的user.rb文件 validate :ensure_birth_date_valid, if: lambda { mentee? && born_on.present? } def ensure

rails的初学者在这里,我尝试允许我公司网站的用户输入他们的生日,并选择一个日期。 在我输入无效日期(如2月31日)之前,一切正常。它给了我一个错误,说日期无效。 我希望在不向配置中添加gem的情况下捕获错误,但是对我来说它很模糊,而且我在过去两天中尝试的所有操作都没有成功

这是我的user.rb文件

validate :ensure_birth_date_valid, if: lambda { mentee? && born_on.present? }

def ensure_birth_date_valid
  Date.parse(born_on)   
rescue
  error.add(:born_on, :invalid)
end
这是表格

<% if registration_for?(:mentee) %>
  <div class="lobbyForm-group">
    <%= f.label :born_on, class: 'lobbyForm-label' %>
    <%= f.date_select :born_on, { :start_year => Date.today.year - Application::MENTEE_AGE_RANGE_MIN, :end_year => Date.today.year - Application::MENTEE_AGE_RANGE_MAX, :order => [:day, :month, :year], :prompt => true}, {:class => 'lobbyForm-control w-auto'} %>
  </div>
<% end %>
这是完整堆栈跟踪错误

/work/academos/academos-plateforme-web/app/controllers/lobby/mentee_registrations_controller.rb:36:in `new'
/work/academos/academos-plateforme-web/app/controllers/lobby/mentee_registrations_controller.rb:36:in `user_params'
/work/academos/academos-plateforme-web/app/controllers/lobby/registrations_controller.rb:25:in `create'
/work/academos/academos-plateforme-web/app/controllers/lobby/mentee_registrations_controller.rb:12:in `create'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/abstract_controller/base.rb:189:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/rendering.rb:10:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:113:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:113:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:552:in `block (2 levels) in compile'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:502:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:502:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:86:in `run_callbacks'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/abstract_controller/callbacks.rb:19:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/rescue.rb:29:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/notifications.rb:159:in `block in instrument'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/notifications.rb:159:in `instrument'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.1.11/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/abstract_controller/base.rb:136:in `process'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionview-4.1.11/lib/action_view/rendering.rb:30:in `process'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal.rb:196:in `dispatch'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_controller/metal.rb:232:in `block in action'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/routing/route_set.rb:82:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/routing/route_set.rb:50:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/journey/router.rb:73:in `block in call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/journey/router.rb:59:in `each'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/journey/router.rb:59:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/routing/route_set.rb:692:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:186:in `call!'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:164:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:186:in `call!'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:164:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bullet-4.8.0/lib/bullet/rack.rb:10:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/rack/error_collector.rb:50:in `traced_call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:55:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/rack/agent_hooks.rb:26:in `traced_call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:55:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/rack/browser_monitoring.rb:23:in `traced_call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:55:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/rack/developer_mode.rb:48:in `traced_call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:55:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:35:in `block in call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34:in `catch'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/warden-1.2.3/lib/warden/manager.rb:34:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/etag.rb:23:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/conditionalget.rb:35:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/head.rb:11:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/remotipart-1.2.1/lib/remotipart/middleware.rb:27:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/flash.rb:254:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/session/abstract/id.rb:225:in `context'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/session/abstract/id.rb:220:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/cookies.rb:562:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.1.11/lib/active_record/query_cache.rb:36:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.1.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.1.11/lib/active_record/migration.rb:380:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/callbacks.rb:82:in `run_callbacks'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/reloader.rb:73:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.1.11/lib/rails/rack/logger.rb:38:in `call_app'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.1.11/lib/rails/rack/logger.rb:22:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/request_id.rb:21:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/methodoverride.rb:21:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/runtime.rb:17:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activesupport-4.1.11/lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/lock.rb:17:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.1.11/lib/action_dispatch/middleware/static.rb:84:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rack-1.5.4/lib/rack/sendfile.rb:112:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/sentry-raven-0.13.3/lib/raven/integrations/rack.rb:54:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.1.11/lib/rails/engine.rb:514:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.1.11/lib/rails/application.rb:144:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/newrelic_rpm-3.9.5.251/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/rack_patch.rb:13:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/configuration.rb:74:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/server.rb:492:in `handle_request'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/server.rb:363:in `process_client'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/server.rb:254:in `block in run'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/thread_pool.rb:101:in `call'
/home/jb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.10.2/lib/puma/thread_pool.rb:101:in `block in spawn_thread'

有人能帮忙吗

好的,我明白了。这是有问题的部分:

date = Date.new params[:user]['born_on(1i)'].to_i, params[:user]['born_on(2i)'].to_i, params[:user]['born_on(3i)'].to_i
    params[:user][:born_on] = date
您不应该在控制器中调用Date.new

你可以做一些类似的事情

date = "#{params[:user]['born_on(1i)'].to_i}-#{params[:user]['born_on(2i)'].to_i}-#{params[:user]['born_on(3i)'].to_i}"
params[:user][:born_on] = date

现在,您将拥有Date.parse('2016-02-31'),并且可以添加错误

您可以发布错误的完整堆栈跟踪吗?我不太清楚您想做什么,但对于标准Rails实践,您应该在validate:sure\u birth\u date\u valid中验证日期,并在表单提交后检查对象是否有任何错误,并相应地向用户显示错误。我正在尝试验证日期,是的,在:sure\u birth\u date\u valid方法中,但我的rescue没有被调用,我有一个错误500。我认为控制器中的这一行抛出了一个异常
date=date。new
您在模型中处理了异常,但控制器中存在问题。我理解错误,但尝试您的代码会给我另一个错误:“没有将日期隐式转换为字符串”。是不是有什么东西丢了?嗯,也许吧。你能告诉我实际提交给控制者的是什么吗?是的,试一下。
date = "#{params[:user]['born_on(1i)'].to_i}-#{params[:user]['born_on(2i)'].to_i}-#{params[:user]['born_on(3i)'].to_i}"
params[:user][:born_on] = date