2012-08-06 4 views
0

레일스 모델에서 부울 값을 nil로 설정할 수 없습니다. 레일 유효성 검사 allow_nil이 예외를 던졌습니다

class Response < ActiveRecord::Base 
    attr_accessible :attending 

    # validations 
    validates :attending, :allow_nil => false 
end 

내 사양을 실행하려고

, 나는 다음과 같은 excpetion 수 :

/Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activemodel-3.2.7/lib/active_model/validations/validates.rb:86:in `validates': You need to supply at least one validation (ArgumentError) 
    from /Users/helixed/Dropbox/Development/current/rsvp/app/models/response.rb:5:in `<class:Response>' 
    from /Users/helixed/Dropbox/Development/current/rsvp/app/models/response.rb:1:in `<top (required)>' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `block in require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:236:in `load_dependency' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:359:in `require_or_load' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:502:in `load_missing_constant' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:192:in `block in const_missing' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:190:in `each' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:190:in `const_missing' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/inflector/methods.rb:230:in `block in constantize' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/inflector/methods.rb:229:in `each' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/inflector/methods.rb:229:in `constantize' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/inflector/methods.rb:260:in `safe_constantize' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/core_ext/string/inflections.rb:66:in `safe_constantize' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/action_controller/metal/params_wrapper.rb:152:in `_default_wrap_model' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/action_controller/metal/params_wrapper.rb:169:in `_set_wrapper_defaults' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/action_controller/metal/params_wrapper.rb:133:in `inherited' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/abstract_controller/railties/routes_helpers.rb:7:in `block (2 levels) in with' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/action_controller/railties/paths.rb:7:in `block (2 levels) in with' 
    from /Users/helixed/Dropbox/Development/current/rsvp/app/controllers/responses_controller.rb:1:in `<top (required)>' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `block in require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:236:in `load_dependency' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:359:in `require_or_load' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:313:in `depend_on' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activesupport-3.2.7/lib/active_support/dependencies.rb:225:in `require_dependency' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/engine.rb:439:in `block (2 levels) in eager_load!' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/engine.rb:438:in `each' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/engine.rb:438:in `block in eager_load!' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/engine.rb:436:in `each' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/engine.rb:436:in `eager_load!' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/application/finisher.rb:53:in `block in <module:Finisher>' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/initializable.rb:30:in `instance_exec' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/initializable.rb:30:in `run' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/initializable.rb:55:in `block in run_initializers' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/initializable.rb:54:in `each' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/initializable.rb:54:in `run_initializers' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/application.rb:136:in `initialize!' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.7/lib/rails/railtie/configurable.rb:30:in `method_missing' 
    from /Users/helixed/Dropbox/Development/current/rsvp/config/environment.rb:5:in `<top (required)>' 
    from /Users/helixed/Dropbox/Development/current/rsvp/spec/spec_helper.rb:3:in `require' 
    from /Users/helixed/Dropbox/Development/current/rsvp/spec/spec_helper.rb:3:in `<top (required)>' 
    from /Users/helixed/Dropbox/Development/current/rsvp/spec/controllers/responses_controller_spec.rb:1:in `require' 
    from /Users/helixed/Dropbox/Development/current/rsvp/spec/controllers/responses_controller_spec.rb:1:in `<top (required)>' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `block in load_spec_files' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `map' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load_spec_files' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:22:in `run' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:69:in `run' 
    from /Users/helixed/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun' 

답변

1

을 : allow_nil 일부 검증에 옵션으로 제공한다 여기 내 모델입니다. 당신은 그것을 사용하는 올바른 방법이 아닌 그것을 독자적으로 사용했습니다.

당신은 유효성을 검사 할 경우에 참석하는 것은 당신이 그것을 다음과 같은 방법을 할 수있는 사실이다 :

validates :attending, :acceptance => { :accept => true }, :allow_nil => false 

UPDATE :

의 유효성을 검사하기 위해 : 참석하는 것은 (참 또는 거짓) 부울 당신이 할 수 사용 :

validates :attending, :inclusion => { :in => [true, false] } 
+0

참석 여부를 확인하고 싶습니다. 참 또는 거짓이지만 유효하지 않습니다. – LandonSchropp

+0

그에 따라 내 대답이 업데이트되었습니다. –

+0

굉장합니다. 도와 주셔서 감사합니다! – LandonSchropp

관련 문제