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

use*_*974 1 ruby string checkbox ruby-on-rails

rails g migration add_anonymous_to_message anonymous:???
Run Code Online (Sandbox Code Playgroud)

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

谢谢

M. *_*her 6

您确定需要另一个数据库列吗?你能做的是

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

如果由于某种原因你确实需要一个单独的DB列anonymous,它应该如下所示:

rails g migration add_anonymous_to_message anonymous:boolean

虽然并非所有RDBMS支持boolean列(MySQL都没有),但Rails通过TINYINT(1)在您指定时生成一个或类似的列来处理这个问题boolean,该列设置为0或者1.