从表中选择记录(和某些条件)

时间:2014-09-13 18:47:29

标签: sql ruby-on-rails ruby activerecord

我不想使用纯SQL查询,但我无法处理Active Records方法。

我有类似的模型:

class Car < ActiveRecord::Base
  has_many :reviews
end

class Review < AcriveRecord::Base
  belongs_to :cars
end

现在我想获得特定汽车的所有评论。您知道我想从car_id相同的评论中选择所有记录(仅针对特定汽车的所有评论)。

我尝试使用http://guides.rubyonrails.org/active_record_querying.html,但它仍然无效。

3 个答案:

答案 0 :(得分:2)

您可以通过以下方式获取汽车的所有评论:

@car.reviews

将您的review.rb模型更新为:

class Review < AcriveRecord::Base
  belongs_to :car # SINGULAR !
end

它将为您提供car作为review获取的工具:

@review.car

答案 1 :(得分:1)

只需找到您想要的汽车对象,例如

@car = Car.find(id: params[id])

然后,所有关联都可以通过名称轻松访问,无需进行查询

@reviews = @car.reviews

答案 2 :(得分:1)

这非常简单。首先获取汽车的活动记录,比如存储在变量car_id中的id

@car = Car.find(car_id)
@car.reviews #This will get you the reviews

为避免多次数据库调用,您可以使用包含

@car = Car.includes(:reviews).find(car_id) 

如果您只是想要评论,那么

@reviews = Review.where(:car_id=>car_id) #provided car_id is the foreign key here