0

次のクエリを使用して単一のレコードを取得しようとしています:

Rating.where(recommendation_id:1773452, rating_set:18, product_id:2086981)

戻り値:

 => [#<Rating id: 931, label: "Fair", rating: 2.0, created_at: "2013-02-21 22:20:19", updated_at: "2013-02-25 06:38:51", recommendation_id: 1773452, notes: "", rating_set: 18, product_id: 2086981, best_one: 1773452>]

ビューに表示する単一の属性を取得しようとしています。例えば:

Rating.where(recommendation_id:rec.id, rating_set:params[:rating_set_id], product_id:params[:product_id]).pluck(:label)

引用符で囲まれた値を返します["Fair"]

値のみを取得するにはどうすればよいFairですか?

4

2 に答える 2

0

うーん。値「Fair」を直接取得することはできません。

Active Recordは、常にモデルのオブジェクトを返します。pluckは、コレクションをもたらす追加のヘルパーです。

また、でクエリを実行すると、.where("CONDITIONS")常にオブジェクトのコレクションが返されます。

したがって、その場合は、.first.label

私の提案は、あなたの条件が同じになる場合、uはそれを使用find_byして単一のレコードを返すことができるということです。

Rating.find_by_recommendation_id_and_rating_set_and_product_id(p1, p2, p3).label

于 2013-02-25T07:46:41.317 に答える
0
rating = Rating.where(recommendation_id:1773452, rating_set:18, product_id:2086981).first

rating.label # returns "Fair"
于 2013-02-25T07:40:55.037 に答える