我正在尝试获取一个布尔值的虚拟属性.在这个例子中,让我们调用虚拟布尔字段children:
车型/ parent.rb
Parent attr_accessible :children attr_accessor :children validates_inclusion_of :children,:in => [true,false] def self.children=(boolean) end end
父母/ new.html.erb
<%= form_for @parent do |f| %> <%= f.check_Box :children %> <%= f.submit "Create" %> <% end %>
Children is not included in the list
当验证出现时.
我怎么写这个?
解决方法
您从浏览器获得的参数是一个字符串(根据您对其他答案的评论:«而不是真和假,但使用0和1.“parent”=> {“children”=>“1”} »).您的验证检查它是否是布尔值.
我建议以下解决方案:
首先,删除你的def self.children =()方法,它在你当前的实现中什么都不做(它是一个类方法,从不调用).
然后,实现一个自定义访问器,将String参数转换为布尔值:
class Parent attr_reader :children def children=(string_value) @children = (string_value == '1') end validates_inclusion_of :children,false] end
有了它,您的原始验证应该工作得很好.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。