我刚刚开始使用rails并且在最近2天之间陷入了急切加载。
我有两个模型Car
和Images
与Car has_many :images
关联。我做了一个api,用它们的图像返回json数组汽车。我想要单个图像而不是关联的所有图像。
我用的是:
Car.where(:company=>"BMW").as_json(:include=> {:images})
这将返回所有车辆的所有图像。 我希望所有汽车都使用单张图像而不是所有图像阵列。
答案 0 :(得分:2)
您应该将has_one :image, -> { order(updated_at: :desc) }
添加到Car
模型。这将为关联定义default_scope
。
然后你可以得到每辆车只有最后一张更新图像的所有车辆:
Car.where(company: 'BMW').as_json(include: [:image])
答案 1 :(得分:0)
这取决于你的需要。
Car.where(company: "BMW").first
Car.where(company: "BMW").last
对你来说够了吗?
如果你有has_many关联,你必须选择你需要的记录(可能添加一些标记)。如果没有它,您将拥有所有关联对象的集合。
使用where(company: "BMW")
比使用where(:company => "BMW")