ruby-on-rails - 验证接受始终失败

标签 ruby-on-rails validation

我看不到我所缺少的东西,但是显然不对。

在模型中:

validates :terms, :acceptance => true, :on => :update

尝试一些选择:
>> a = Factory(:blog_agreement)
=> #<BlogAgreement id: 54, terms: false, created_at: "2011-01-20 11:33:03", updated_at: "2011-01-20 11:33:03", accept_code: "fa27698206bb15a6fba41857f12841c363c0e291", user_id: 874>

>> a.terms
=> false

>> a.terms = true
=> true
>> a.save
=> false

>> a.terms = "1"
=> "1"
>> a.save
=> false

>> a.terms = 1
=> 1
>> a.save
=> false
>> a.errors.full_messages
=> ["Terms must be accepted"]

最佳答案

更新的答案..
因此,事实证明问题出在表中的术语是实际列。通常,validates_acceptance_of是不带此列使用的,在这种情况下,它将定义属性访问器并将其用于验证。
为了使validates_acceptance_of映射到真实表列时起作用,必须传递:accept选项,例如:

validates :terms, :acceptance => {:accept => true}
其原因与Active Record中的类型转换有关。当命名属性实际存在时,AR根据数据库列类型执行类型转换。在大多数情况下,acceptance列将被定义为 bool(boolean) 值,因此model_object.terms将返回true或false。
当没有此类列时,attr_accessor :terms只需从params哈希返回传入模型对象的值,该值通常是复选框字段中的"1"

关于ruby-on-rails - 验证接受始终失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746710/

相关文章:

mysql - 在本地主机上运行 Rails 应用程序时出现问题

javascript - rails Assets 管道 javascript "SyntaxError: Unexpected token export"

c# - 如何禁用按钮,直到在 wpf mvvm 中进行良好验证

ruby-on-rails-3 - 如何编写依赖于类的多个属性的 Ruby on Rails 验证?

javascript - JQuery:验证表单中的所有输入

ruby-on-rails - Controller 中的 Rails 逻辑?

ruby-on-rails - 在 Mac OS X 10.9.5 上安装 Ruby 2.1.3 时检查或清理工作树错误

JQuery 表单提交前验证失败

java - 无法通过验证在 JAVA 中运行随机数游戏

ruby-on-rails - 如何修复 Rails 中的警告