Если: строка для текста, как данные флажков хранятся в рельсах? - PullRequest
1 голос
/ 13 августа 2011
rails g migration add_anonymous_to_message anonymous:???

Если бы я добавлял заголовок и т. Д. В сообщение, я бы поставил rails g migration add_title_to_message title:string, но если: анонимный - это флажок в форме отправки сообщения, как мне добавить его в базу данных, чтобы было только два варианта: флажок = анонимный, а флажок снят = имя пользователя отображается?

Спасибо

Ответы [ 2 ]

6 голосов
/ 13 августа 2011

Вы уверены, что вам нужен еще один столбец базы данных? Что вы могли бы сделать, это

  • Добавить столбец 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, для которого установлено значение 0 или 1.

0 голосов
/ 13 августа 2011

Вы должны использовать логический тип для хранения anonymous и строку для хранения username:

rails g migration add_anonymous_and_username_to_message anonymous:boolean :default => false username:string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...