寻找更新多态表关联的更好方法

时间:2016-04-07 19:51:34

标签: ruby-on-rails ruby-on-rails-4

我正在研究问答类型的系统,以便可以对问题进行投票并且可以对答案进行投票。我有一个多态的可投票关联,这样一个问题和一个答案有很多票。 但我想把问题答案的所有选票都换成。 如果它只是一个协会,我可以这样做:

Answer.first.votes.first.update(voteable: Question.first)

但这不适用于多个协会。

我试着这样做:

Answer.first.votes.update_all(voteable: Question.first)

但是它返回了一个无法找到列voteable

的错误

我知道实现相同结果的另一种方法是:

Answer.first.votes.update_all(voteable_type: "Question", voteable_id: 1)

但我想确定没有别的方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

不,不可能这样做。 根据一位用户的评论:

  

我不确定update_all的计划是什么,但文档相当清楚,它不像其他关系方法那样工作。它没有实例化对象,它只返回更新的记录数,而不是ActiveRecord :: Relation,它只是直接将sql发送到数据库。甚至更多的例子都是" sql像"而且#34; rails就像"。此方法的目的是对许多记录进行快速更新。

来源:https://github.com/rails/rails/issues/17072