2016-10-19 6 views
1

私は整数としてデータベースに格納されている属性priorityを持っています。私がリーダーにアクセスしたい場合は、私がように、それを上書きActiveRecord属性をオーバーライドするgetterは一貫した結果を生成しません

PRIORITY = { 
     high:1,normal:2,low:3 
    } 

:私は特定の値にマッピングし、私はすべての属性値が変更されているかどうかを確認したいときに私の問題がある

def priority 
    PRIORITY.key(read_attribute(:priority)) 
    end 

とそれは、データベースの値をとり、元の値について

task.changes 
=> {"priority"=>[2, :high]} 

:私は、私は次のような結果を得るため、changesメソッドを呼び出します。変更された値の場合、getterアクセサ値の結果が使用されます。それは矛盾している。

changesコールを一貫して動作させるにはどうすればよいですか?

答えて

1

あなたは以下のように、あなたのモデルで列挙型を使用してしようとする場合があります:

enum priority: { high: 1, normal: 2, low: 3} 

はここhttp://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

+0

私もこの前に出くわしたことがないのマニュアルを参照してください。これはRailsのどのバージョンで利用できますか? – Donato

+0

私はレール2または3以来、それはあなたの人生や少なくともあなたのコードを変更しようとする試してみてください:) –

関連する問題