我在这个问题上找不到其他答案帮助了我。
我有一个条款和条件框,想验证它是否在创建时进行了检查。
在我的模特中:
validates :terms_and_conditions, :on => :create, acceptance: true, :allow_nil => false
在我看来:
<%= f.check_box(:terms_and_conditions )%>
无论是否检查check_box
,它总是失败。我认为它实际上从未设置过这个领域,问题在我看来,但我无法找到它。
提交表单时记录。
Processing by Users::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xNNmGTWSV4hkj0rrlZeOq+AiTlJ9sc9+cAT1Sy0bjhc=", "user"=>{"email"=>"sdasdr@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "name"=>"", "surname"=>"", "country_id"=>"", "language"=>"", "description"=>"", "register_as_company"=>"1", "terms_and_conditions"=>"1"}, "commit"=>"Sign up"}
Unpermitted parameters: name, surname, country_id, language, description, register_as_company, terms_and_conditions
[1m[35m (0.1ms)[0m begin transaction
[1m[36mUser Exists (0.3ms)[0m [1mSELECT 1 AS one FROM "users" WHERE "users"."email" = 'sdasdr@gmail.com' LIMIT 1[0m
[1m[35m (0.1ms)[0m rollback transaction
[1m[36mCountry Load (0.2ms)[0m [1mSELECT "countries".* FROM "countries"[0m
Rendered devise/registrations/new.html.erb within layouts/application (6.1ms)
Rendered layouts/_auth_widget.html.erb (1.1ms)
Completed 200 OK in 127ms (Views: 22.8ms | ActiveRecord: 0.7ms)
答案 0 :(得分:5)
您未允许将terms_and_conditions
属性保存在数据库中。如果您发现服务器密切关注,
Unpermitted parameters: name, surname, country_id, language, description, register_as_company, terms_and_conditions
有多个不允许的属性,因此所有这些属性都没有保存在数据库中。 terms_and_conditions
变为nil
并导致错误,因为通过表单提交的值将被忽略(因为未获准状态)。
这与Rails 4 Strong Parameters概念有关,其中只有那些属性会保存在白名单/允许的数据库中。
的信息另外,根据服务器日志,我注意到这些属性是User
模型的一部分,它是Devise
模型。允许Devise的属性可以以不同的方式完成,
你可以参考SO Question: Rails devise simple form not saving all fields。