2012-01-23 10 views
0

私は2つのモデル& offline_userと を持っています。両方のモデルの内容を組み合わせたリストから項目を選択するには、collection_selectのようなドロップダウン選択コントロールを使います。複数のモデルを1つの選択リストに結合する

どうすればよいですか?


これらはどちらも似ていますが、どちらもfirst_name、last_name、emailアドレスと電話フィールドを含んでいます。ただし、電子メールアドレスはユーザーモデルには必須ですが、オフラインユーザーモデルでは必須ではありません。私は、ユーザーモデルの認証にdeviseを使用します。

次のように、この背後にある理由は、

私は、Webアプリケーションのログインとしてメールアドレスを使用しますが、私は、ビジネスに電話して、おそらく電子メールアドレスを持っていない顧客に対応するために必要があります。だから私は管理者が電子メールアドレスを要求せずに新しいユーザーを作成できるようにしたい。

ビジネスには、メールアドレスの入力を求められていない既存の顧客のリストもあります。私はこのリストをインポートできるようにしたい。

おそらく私はただ1つのモデルを使用していたはずですが、当時はそれらを別々に保つのが最善のようでした。提案?

+0

は、テーブルの構造が類似しているすべてのユーザー名をつかむために、通常のUser.all.select(:first_name)施設を使用することができますか? –

+0

なぜユーザーのブール値属性ではなく別のモデルを使用するのですか? – Eric

+0

が上記のように追加されていれば、おそらく単一のモデルを使用することをお勧めします。代わりにそのモデルを試してみることにしますが、それはそれ自体の問題を引き起こすと確信しています。 –

答えて

0

あなたはこれを使用すると、1つのモデルでは、ユーザーの両方のタイプを持つことができるだけでなく、正常なことを確実にすることになる移行

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 

を使用した場合ユーザーには電子メールアドレスがあります。

あなたはその後、

+0

私はこのアプローチについて考えています。少し後で皆さんにお返しします。 –