Объедините несколько моделей в одном списке выбора - PullRequest
0 голосов
/ 24 января 2012

У меня есть две модели, user & offline_user, и я хочу использовать выпадающий элемент управления select, например collection_select, чтобы выбрать элемент из комбинированного списка содержимого обеих моделей.

Как мне поступитьthis?


Они очень похожи, они оба содержат имя, фамилию, адрес электронной почты и поле телефона.Однако адрес электронной почты является обязательным для модели пользователя, но не обязательным для модели в автономном режиме.Я использую devise для аутентификации модели пользователя.

Причина этого заключается в следующем:

Я использую адрес электронной почты в качестве имени входа в веб-приложение, но мне также нужно обслуживать клиентов, которые звонят в бизнеси возможно нет адреса электронной почты.Поэтому я хочу, чтобы администратор мог создавать новых пользователей, не требуя адреса электронной почты.

Компания также будет иметь список существующих клиентов, которых не попросили предоставить адрес электронной почты.Я хочу иметь возможность импортировать этот список.

Возможно, мне следовало бы использовать только одну модель, но в то время казалось, что лучше держать их отдельно.Предложения?

1 Ответ

0 голосов
/ 24 января 2012

Если бы вы использовали миграцию

create_table :users do |t|
  t.string :first_name
  t.string :last_name
  t.string :email
  t.string :phone
  t.boolean :offline
end

а затем модель

class User < ActiveRecord::Base
  validates :email, :presence => true, :if => "offline == false"
end

Это позволит вам иметь обоих типов пользователей в одной модели, а также гарантирует, что обычный пользователь имеет адрес электронной почты.

Затем вы можете использовать обычные User.all.select(:first_name) средства для захвата всех имен пользователей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...