ruby-on-rails – 如何使虚拟属性成为布尔字段
发布时间:2020-12-17 03:54:18 所属栏目:百科 来源:网络整理
导读:我正在尝试获取一个布尔值的虚拟属性.在这个例子中,让我们调用虚拟布尔字段children: 车型/ parent.rb Parent attr_accessible :children attr_accessor :children validates_inclusion_of :children,:in = [true,false] def self.children=(boolean) enden
我正在尝试获取一个布尔值的虚拟属性.在这个例子中,让我们调用虚拟布尔字段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 有了它,您的原始验证应该工作得很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |