【问题标题】:Named scope for has-many and belongs-to associationhas-many 和 belongs-to 关联的命名范围
【发布时间】:2024-03-09 08:05:02
【问题描述】:
  • RaceWeek 有很多选择
  • Pick 属于 RaceWeek

  • RaceWeek 有一个 start_date 属性和一个 end_date 属性。

  • Pick 有一个已解析的属性。

我想返回与 RaceWeek 记录相关的所有选择,这些记录介于(指定的)开始日期和结束日期之间,然后将选择记录中的所有已解析属性更新为 0。

使用named_scopes 或其他方法的组合来完成此任务的最佳方法是什么?效率越高越好。我可以接受纯 SQL 解决方案。

我在 Rails 2.3.11 上。

【问题讨论】:

    标签: mysql ruby-on-rails named-scope sql-update


    【解决方案1】:

    您可以使用简单的 SQL 查询进行更新:

    UPDATE picks SET resolved = 0
    WHERE race_week_id IN
      (SELECT id FROM race_weeks
      WHERE start_date > '2011-01-15' AND end_date < '2011-06-15');
    

    【讨论】: