Rails使用AR find返回单个记录

时间:2013-02-25 07:30:56

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我正在尝试使用以下查询返回单个记录:

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

2 个答案:

答案 0 :(得分:0)

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

rating.label # returns "Fair"

答案 1 :(得分:0)

嗯。您不能直接获得'Fair'的价值。

由于Active Record将始终返回模型的对象。 pluck是一个额外的帮手,将带来收集。

当您使用.where("CONDITIONS")进行查询时,它将始终返回对象集合。

所以在这种情况下你必须做.first.label

我的建议是,如果您的条件相同,那么您可以使用find_by来返回单个记录。

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