Ruby on rails Rails 4-复选框和布尔字段

Ruby on rails Rails 4-复选框和布尔字段,ruby-on-rails,Ruby On Rails,我在网上看到了很多关于这个问题的不同文章(这里有一些),但是有很多不同的建议,其中很多已经过时了,这让我今天在这里提问 我的用户表中有一个名为admin的字段?这是一个:布尔数据类型。我在视图中的表单中还有一个复选框,名为admin?-我希望在提交表单时能够在表记录中相应地创建TRUE和FALSE 我的视图代码的一部分是: Admin User&#63; <%= f.check_box :admin? %> 当我提交表格的时候,管理员?场不受影响。任何建议都将不胜感激。无需

我在网上看到了很多关于这个问题的不同文章(这里有一些),但是有很多不同的建议,其中很多已经过时了,这让我今天在这里提问

我的用户表中有一个名为admin的字段?这是一个:布尔数据类型。我在视图中的表单中还有一个复选框,名为admin?-我希望在提交表单时能够在表记录中相应地创建TRUE和FALSE

我的视图代码的一部分是:

Admin User&#63; <%= f.check_box :admin? %>
当我提交表格的时候,管理员?场不受影响。任何建议都将不胜感激。

无需将其命名为:“管理员?”

只需在表单中使用此选项:

Admin User&#63; <%= f.check_box :admin %>

这应该是可行的。

对于任何拥有不属于对象的表单的人来说

我发现使用以下复选框语法:

= check_box 'do_this', '', {}, 'true', 'false'
然后在控制器端:

ActiveRecord::ConnectionAdapters::Column.value_to_boolean(params[:do_this])
将为您提供正确的布尔值
执行此操作

示例:

[1] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("true")
=> true
[2] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("false")
=> false
[3] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("1")
=> true
[4] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("0")
=> false
编辑: 以上内容已弃用,请使用:

ActiveRecord::Type::Boolean.new.Type\u cast\u from\u database(value)

它给出了与上述示例相同的结果

Rails 5

上述选项在Rails 5中不起作用。相反,请使用以下命令:


ActiveRecord::Type::Boolean.new.cast(value)

您可能不允许控制器通过参数接受admin字段。换言之,这是一个强参数问题。确保:admin在您的模型参数中是允许的。

当我使用f时,复选框:admin它会出错,但当我使用admin时不会出错?表中的字段应称为admin还是admin?(带问号)-我在某个地方看到它建议使用?在一个布尔域中,实际上我收回了这一点。更多的研究和我应该命名为管理员没有?“值\u到\u布尔”方法已被删除,请使用“双重爆炸”将任何值转换为布尔值,请参见“双重爆炸”将0转换为true,这样它不会给出与
值\u到\u布尔值相同的答案。似乎是
ActiveRecord::Type::Boolean.new.Type\u cast\u from\u database(value)
是当前的操作方式。@按“是”,链接问题中的投票数越高越好。Rails 5:ActiveRecord::Type::Boolean.new.cast(字符串)
ActiveRecord::ConnectionAdapters::Column.value_to_boolean(params[:do_this])
[1] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("true")
=> true
[2] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("false")
=> false
[3] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("1")
=> true
[4] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("0")
=> false