0

属性 "status" 、 "code" 、 "type" を持つ Question モデルがあります。

3 つの属性はすべてドロップダウンにする必要があります。たとえば、ステータスは「アクティブ / クローズ済み / 非アクティブ」などになります。

これらのドロップダウンのすべての可能なオプションは、データベースからのものでなければなりません。これはどのような保管方法が良いでしょうか。

私は新しいモデルを作成することを計画しました

[lookup_for][lookup_type][lookup_value] 

そのモデルを HABTM で質問にリンクし、共同テーブル lookup_questions を作成します。

次のようなルックアップテーブルをクエリすることで、ドロップダウンを埋めるすべてのステータスを取得できるように

@questions_status = lookup.find_by_lookup_type('status')

私は正しい方向にいますか?, 私はレールの経験がありません, アドバイスしてください.

4

3 に答える 3

0

最後に、私はHABTMの関係に従いました。これが私のアプリにとってより正しい方法だと思います(ルックアップは更新され続けるため)。

于 2012-11-15T14:40:50.070 に答える
0

モデルを作成Statusし、それぞれのデータベース テーブルの値列に値を格納Codeできます。モデルは次のようになりますTypeUser

class User < ActiveRecord::Base
  has_one :status
  has_one :code
  has_one :type
end

Status.allたとえば、ドロップダウンに入力できます。

typeところで、ActiveRecord モデルの列には注意してください。単一テーブルの継承用に予約されています。

于 2012-11-11T21:04:13.153 に答える
0

HABTM は言うまでもなく、単純なステータス statii(?) をデータベースに入れるのは得策ではないかもしれません。ユーザーが変更するか、定期的に (半) 変更される可能性があるデータのテーブルのみを保持します。物事を実行するには、モデルにオプションを貼り付けるだけです。オプションが大幅に変更されている場合は、テーブルを追加します

あなたのモデルで

STATUS = [
    #  Displayed       stored in db you can use integer or strings at per field.
    [ "Active",        1 ],
    [ "Closed",        2 ],
    [ "Inactive",      3 ]

フォーム内(新規/編集)

<%= f.select :question_status, 
              Question::STATUS,
              :prompt => "Select"  %>

ショーで

<%=h (Question::STATUS.find_all{|disp, value| value == @question.question_status}).map {|disp, value| disp} %>
于 2012-11-12T20:05:08.067 に答える