如果:字符串用于文本,复选框数据如何存储在rails中?

时间:2011-08-13 08:53:05

标签: ruby-on-rails ruby string checkbox

rails g migration add_anonymous_to_message anonymous:???

如果我在邮件中添加标题等,那么我会放rails g migration add_title_to_message title:string但是如果:匿名是邮件提交表单中的复选框,如何将其添加到数据库中以便只有两个选项:box checked = anonymous and box unchecked = username显示?

由于

2 个答案:

答案 0 :(得分:6)

您确定需要其他数据库列吗?你能做的是

  • 添加允许username:string值(默认)
  • 的列NULL
  • 验证模型,以便取消选中anonymous时,保存空白用户名无效
  • 验证模型,以便在选中anonymous时,无论表单值是什么,用户名始终保存为空白(nil
  • 稍后检查邮件是否为匿名邮件时,您只需检查message.username.nil?
  • 即可

如果出于某种原因,您确实需要anonymous的单独数据库列,它应如下所示:

rails g migration add_anonymous_to_message anonymous:boolean

虽然并非所有RDBMS支持boolean列(MySQL都不支持),但Rails会在您指定TINYINT(1)时生成boolean或类似列来处理此问题,该列设置为01

答案 1 :(得分:0)

您必须使用布尔类型来存储anonymous并使用字符串来存储username

rails g migration add_anonymous_and_username_to_message anonymous:boolean :default => false username:string