いくつかの状態を持つレールの移動によって列を追加する方法はありますか?ブール値は2つの状態を持つことができます。しかし、2つ以上の州が必要な場合はどうすればよいですか?複数の状態を持つ列を追加する
columnに4つの状態を設定するには、以下のコマンドにどのような項目を含める必要がありますか?これらの4つの状態は
rails generate migration add_column_to_users
いくつかの状態を持つレールの移動によって列を追加する方法はありますか?ブール値は2つの状態を持つことができます。しかし、2つ以上の州が必要な場合はどうすればよいですか?複数の状態を持つ列を追加する
columnに4つの状態を設定するには、以下のコマンドにどのような項目を含める必要がありますか?これらの4つの状態は
rails generate migration add_column_to_users
特定の値のセットを格納する必要がある場合は、列挙子に関心があります。
最初のソリューションは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')
);
は、しかし、制約が施行されていますが、あなたのセットに新しい値が必要な場合は、データベースの移行を必要とします。
文書:
...「小さい」、「extra_small」、「大」、「中」と呼ばれることになるあなたは、単純なVARCHAR
(:string
タイプ)カラムを用いて、説得力のあるパフォーマンス上の問題がない限り、通常は大丈夫です。
有効な状態を配列に格納し、モデルに検証を設定して、指定された状態が正しいことを確認することができます。