Ruby on rails 在include中使用即时加载从has\u many获取单个记录

Ruby on rails 在include中使用即时加载从has\u many获取单个记录,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我是rails的新手,在过去两天的急切加载之间进退两难。 我有两种车型Car和Images和Car有很多:Imagesassociation。我制作了一个api,它返回带有汽车图像的json数组。我想要一张图片,而不是来自关联的所有图片。 我用的是: Car.where(:company=>"BMW").as_json(:include=> {:images}) 这将返回所有汽车及其所有图像。 我希望所有汽车都有一个图像,而不是所有图像阵列。这取决于您需要什么 如果您首先需要,请写

我是rails的新手,在过去两天的急切加载之间进退两难。 我有两种车型
Car
Images
Car有很多:Images
association。我制作了一个api,它返回带有汽车图像的json数组。我想要一张图片,而不是来自关联的所有图片。 我用的是:

Car.where(:company=>"BMW").as_json(:include=> {:images})
这将返回所有汽车及其所有图像。
我希望所有汽车都有一个图像,而不是所有图像阵列。

这取决于您需要什么

  • 如果您首先需要,请写:
    Car.where(company:“BMW”)。first
  • 如果您需要最后一个,请写:
    Car.where(公司:“BMW”).last
  • 对你来说够了吗

    如果你有很多关联,你必须选择你需要的记录(可能添加一些标志)。否则,您将拥有来自所有关联对象的集合


    使用
    where(company:“BMW”)
    比使用
    where(:company=>“BMW”)
    更好,这取决于您需要什么

  • 如果您首先需要,请写:
    Car.where(company:“BMW”)。first
  • 如果您需要最后一个,请写:
    Car.where(公司:“BMW”).last
  • 对你来说够了吗

    如果你有很多关联,你必须选择你需要的记录(可能添加一些标志)。否则,您将拥有来自所有关联对象的集合


    使用
    where(company:“BMW”)
    比使用
    where(:company=>“BMW”)
    更好。您应该将
    has_One:image,->{order(updated_at::desc)}
    添加到
    Car
    模型中。这将为关联定义一个默认范围

    然后,您可以获得每辆车只有一张最后更新的图像的所有车辆:


    Car.where(company:'BMW')。作为json(include:[:image])
    您应该将
    has\u one:image,->{order(updated_at::desc)}
    添加到
    Car
    模型中。这将为关联定义一个默认范围

    然后,您可以获得每辆车只有一张最后更新的图像的所有车辆:


    Car.where(company:'BMW')。as_json(include:[:image])

    Car
    模型中添加另一个关联:
    有一个:image
    那么你可以做:
    Car.where(:company=>“BMW”)。as_json(:include=>{:image})
    @Nitisha-你想要哪一个图像:第一个?可能在“图像”中添加一个标志它定义了一个主映像并通过验证将其约束为一个。实际上,我需要最后更新的映像(如果可能的话),否则任何映像将在
    Car
    model:
    中添加另一个关联:image
    ,然后您可以执行:
    Car.where(:company=>“BMW”)。作为\u json(:include=>{:image})
    @Nitisha-您想要哪个图像:第一个?可能会在定义主图像的“图像”中添加一个标志,并通过验证将其约束为一个。实际上,如果可能的话,我需要最后一个更新的图像,否则我认为
    默认范围
    通常都不是一个好主意。并链接到解释why@MartinZinovsky你把这事搞错了。您的链接讨论了整个模型的默认范围。我只将其添加到关联中的方法。为图像定义两种不同的关系是否合适,例如has_many:images和has_many:images?@Nitisha这取决于您的需要。在这种情况下,这将是一个选项。我认为一般来说,
    default\u scope
    不是一个好主意。并链接到解释why@MartinZinovsky你把这事搞错了。您的链接讨论了整个模型的默认范围。我只将其添加到关联中的方法。为图像定义两种不同的关系是否合适,例如has_many:images和has_many:images?@Nitisha这取决于您的需要。如果是那样的话,那是一个选择。你读过我的问题吗?我认为不是根据你的回答,这不是一个好的技巧来写任何东西来增加选票。有意义的答案会自动被用户提高投票率。你读到我的问题了吗?我认为不是根据你的答案,这不是一个好的技巧来写任何东西来提高投票率。有意义的答案将由用户自动投票。