如何更新has_many关系中的孩子?

时间:2011-03-27 02:30:00

标签: ruby-on-rails has-many

我有一个名为Tournament的模型,has_many条目。 Tournament中有一个名为reset_rankings的方法,它遍历所有条目并根据条目当前有多少个点更新每个条目的current_rank字段。我在此遍历中更新的每个条目上调用entry.save

此方法似乎更新了内存中的条目,但是当我{I} reload我正在使用的锦标赛时,current_rank字段全部恢复到调用reset_rankings之前的状态

我在调用tournament.save后尝试拨打reset_rankings,但仍然没有保留更改

我确信我做的事情很愚蠢,但是铁轨魔术并没有像我期望的那样发挥作用。

1 个答案:

答案 0 :(得分:1)

当你调用entry.save时,你在检查返回值吗?如果为false,则由于某种原因阻止了保存,例如未通过验证。

或者将foo.save更改为foo.save!保存失败时引发错误。