私はこれを機能させるために検索して試みてきましたが、簡単な解決策を見つけることができません。
Taskというモデルクラスがあり、このクラスには、overall_ratingというattr_accessorを介して取得できる計算値があります。
class Task < ActiveRecord::Base
attr_accessor :overall_rating
def overall_rating
#returns calculated value
end
end
次のようなActiveRecordクエリのインスタンスを作成する場合
t = Task.first
このような「overall_rating」値を取得できます
t.overall_rating #returns calculated value
しかし、同じ値を取得するが、ハッシュとしてオブジェクトにアクセスする方法はありますか?
t['id'] # returns ID
t['overall_rating'] #returns nil
よろしくお願いします。
レコードをハッシュとして返すメソッドを定義するだけです。ActiveRecordのattributes
メソッドを使用し、計算された属性を手動でハッシュに追加します。
class Task < ActiveRecord::Base
attr_reader :overall_rating
def overall_rating
# returns calculated value, the following is a simple example of a calculation
id + 100
end
def to_h
attributes.merge("overall_rating" => overall_rating)
end
end
また、計算値にセッターを定義したくない場合があるattr_accessor
ため、に変更したことにも注意しattr_reader
てください。
例:
t = Task.find(5)
t.to_h
# => { "id" => 5, "overall_rating" => 105 }
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加