1

[私はレールを初めて使用します。愚かな質問ではないことを願っています。同様の質問を見ましたが、PHP 用であり、私の場合は役に立ちません]

私の問題を説明するために、ここではユーザーへの類推を使用しています。アプリにテーブルがあるとしましょう。usersusersテーブルにフィールドを追加しましたuser_type。ここで、ユーザーのタイプを特定したいと思います。

たとえば、5種類のユーザーがいるとしましょう。モデレーター、管理者、消費者など。

user_typeユーザータイプを格納するためにフィールドを文字列タイプにしたくありません。代わりに、これらの整数値をuser_type格納integerしてから、それぞれの文字列値にマップしたいと考えています。このアプローチの利点は、ユーザー タイプの名前を変更できることです。コンシューマをコンシューマと呼ぶのではなく、別のものと呼びたいとします。

整数を db に格納する方が優れており、ある程度の柔軟性が得られると思います。

formtasticを使用して選択メニューを作成できることを知っています(管理パネルとしてactive_adminを使用しており、formtasticはフォームに使用されています)

 <%= f.input :user_type, :as => :select, :collection => { 
        0    => "Admin", 
        1   => "Moderator",
        2 => "Consumer",
    } %>

値を db に保存し、これらのユーザーを db から選択します。

Railsでそれを行うためのより良い方法またはアプローチがあるか、またはこれを行うために利用できるgemがあるか、またはあなたが好む他のアプローチと、それを推奨する理由を知りたいです。

データベースとしてpostgresqlを使用しています。

ありがとう!!

4

2 に答える 2

3

個人的には、active_enum gem をsimple_formに組み合わせたものが気に入っています。これは、実装が非常に簡単で、連携してうまく機能するためです。

あなたの場合、次のような列挙型クラスを定義する必要があります。

class Type < ActiveEnum::Base
  value 1 => 'Admin'
  value 2 => 'Moderator'
  value 3 => 'Consumer'
end

次に、Userモデルにこれを追加するだけです:

enumerate :user_type, :with => Type

そして、本当に素晴らしいのsimple_formは、次のように呼び出すだけでよいことです。

<%= f.input :user_type =>

すべての値を取得しselectます。

于 2013-01-31T12:51:30.527 に答える