Два булевых поля.Одно поле ввода.Рубин на рельсах - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть два логических поля в моей модели.Существует зависимость, что только одна может быть правдой одновременно.На моей странице просмотра я хочу отображать их как радиовходы с помощью formtastic.И не отдельно, а как одна радиогруппа.Я знаю, что есть путь рельсов, но я почему-то не могу его найти.

Пожалуйста, помогите.Заранее спасибо.

1 Ответ

4 голосов
/ 15 февраля 2011

Вы можете создать виртуальный атрибут, чтобы получить и установить соответствующее значение.Например, если бы у вас было логическое имя «мужской» и логическое имя «женский», вы могли бы контролировать оба с помощью атрибута пола, например, так:

class User
  def gender= gender
    self.male = (gender == 'M')
    self.female = (gender == 'F')
  end

  def gender
    male ? 'M' : 'F'
  end
end

После этого вы могли бы иметь группу переключателей для выбора пола:

radio_button_tag :gender, 'M'
radio_button_tag :gender, 'F'

Конечно, у вас всегда есть возможность объединить значения в один атрибут из 3 состояний, например, пол, который может быть 'M', 'F' или NULL.

...