Rails 4のActiveRecordクエリ内でハッシュ(attr_accessor)の計算値を取得するにはどうすればよいですか?

jcamejo

私はこれを機能させるために検索して試みてきましたが、簡単な解決策を見つけることができません。

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

よろしくお願いします。

ボラマ

レコードをハッシュとして返すメソッドを定義するだけです。ActiveRecordattributesメソッド使用し、計算された属性を手動でハッシュに追加します。

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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ