2017-03-06 9 views
0

モデルに列挙型があります。私はその整数値を取得したい、またはそれは私が、私はデフォルトのものであることを選択した値の整数値を取得したい設定されていない:列挙型のため列挙型が存在しない場合のデフォルト値

enum my_enum: [:val1, :val2, :val3] 

    def method1 
    int_val = self.read_attribute(:my_enum) 

    # what if my_enum hasn't been set? 
    unless int_val 
     int_val = ??? # how to get integer of :val2 ??? 
    end 
    end 

答えて

0

デフォルト値は、あなたがに設定された値であります0番目のインデックス。 例: enum Animals {Cat、Dog、Lion、Tiger}のデフォルトはCat(動物)です(0)。あなたが列挙型の動物であることを列挙型を定義する場合

しかし{猫= 1、犬= 2、ライオン= 3は、タイガー= 0}、デフォルトは「タイガー」となります

あなたが列挙型を定義することができることを考えると、あなたの必要条件を満たすために

+0

ためにRailsのAPIにルビーをチェック – Kamisha

0

データベースのフィールドのデフォルト値を設定することは実用的です。データベース移行を使用して、デフォルト値を必要なフィールドに変更または追加してみてください。コード例:データベースがnilで、それはまた、nilを返したときに「my_enum」

class ChangeDefaultValueToModel < ActiveRecord::Migration 
    def change 
    change_column_default :model_name, :field_name, default_value 
    end 
end 

詳細についてchange_column_default

関連する問題