我正在尝试使用以下查询返回单个记录:
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
?
答案 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