has-many和belongs-to association的命名范围

时间:2011-05-15 04:12:07

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

  • RaceWeek有很多选秀
  • Pick属于RaceWeek

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

  • Pick具有已解析的属性。

我想返回与(指定的)start_date和end_date之间的RaceWeek记录关联的所有选择,然后将选择记录中的所有已解析属性更新为0。

使用named_scopes或其他任何组合实现此目的的最佳方法是什么?效率越高越好。我对纯粹的SQL解决方案没问题。

我在Rails 2.3.11上。

1 个答案:

答案 0 :(得分:0)

您可以使用简单的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');