【问题标题】:Looking for a better way of updating the association of a polymorphic table寻找更新多态表关联的更好方法
【发布时间】:2016-09-06 11:37:25
【问题描述】:

我正在开发一种问答系统,这样可以对问题进行投票,也可以对答案进行投票。我有一个多态的可投票关联,这样一个问题和一个答案就有很多票。 但我想将答案的所有投票都切换到问题。 如果只是一个关联,我可以这样做:

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)

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

【问题讨论】:

  • 我很确定你必须这样做

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


【解决方案1】:

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

我不确定update_all 的计划是什么,但文档很清楚它不能像其他关系方法一样工作。它不实例化对象,它只返回更新记录的数量,而不是 ActiveRecord::Relation,它只是将 sql 直接发送到数据库。甚至示例都比“rails like”写得更像“sql like”。此方法的目的是对许多记录进行快速更新。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多