2016-05-30 2 views
1

いくつかの状態を持つレールの移動によって列を追加する方法はありますか?ブール値は2つの状態を持つことができます。しかし、2つ以上の州が必要な場合はどうすればよいですか?複数の状態を持つ列を追加する

columnに4つの状態を設定するには、以下のコマンドにどのような項目を含める必要がありますか?これらの4つの状態は

rails generate migration add_column_to_users 

答えて

1

特定の値のセットを格納する必要がある場合は、列挙子に関心があります。

最初のソリューションはActiveRecord::Enumであるレールに

列挙子(参照doc

例:

class Conversation < ActiveRecord::Base 
    enum status: [ :active, :archived ] 
end 

この解決策の欠点は、あなたが実際に格納することであるintまたはstringデータベースに入力します。そのため、制約は実際には適用されません。

データベース列挙子

第二の可能性は、ネイティブの列挙型を使用することで、あなたのRDBMSは、それをサポートする必要があります。

例:このソリューションでは

CREATE TABLE shirts (
    name VARCHAR(40), 
    size ENUM('x-small', 'small', 'medium', 'large', 'x-large') 
); 

は、しかし、制約が施行されていますが、あなたのセットに新しい値が必要な場合は、データベースの移行を必要とします。

文書:

1

...「小さい」、「extra_small」、「大」、「中」と呼ばれることになるあなたは、単純なVARCHAR:stringタイプ)カラムを用いて、説得力のあるパフォーマンス上の問題がない限り、通常は大丈夫です。

有効な状態を配列に格納し、モデルに検証を設定して、指定された状態が正しいことを確認することができます。

関連する問題