【问题标题】:Rails ActiveRecord - Updating polymorphic idRails ActiveRecord - 更新多态 id
【发布时间】:2013-04-25 05:59:10
【问题描述】:

我有一个应用程序,其中包含三个模型。我有非常相似的潜在客户和客户(但差异很大,以至于他们保证了自己的模型)。然后我有一个名为“Interactions”的多态模型,它有一个interactionable_id 和一个interactionable_type(当然,它可以是'customer' 或'lead')。

我最近尝试构建一种方法,将交互从潜在客户迁移到客户(当潜在客户升级为客户时)。

我想保持我的代码精简,并且为了保持我的方法简单,我决定简单地更新交互的属性,以便interactionable_id 和interactionable_type 将分别更改为客户的id 和“客户”。

我尝试了很多不同的方法来做到这一点,唯一可以更新的是interactionable_type。无论我尝试什么,interactionable_id 都不会改变。我尝试输入一个静态数字(而不是 customer.id)。我尝试了 update_attributes 并尝试单独更新属性然后保存它。此外,我确实在 attr_accessible 列表中有 :interactionable_id。

我之所以成功,是因为我决定以稍微不同的方式处理这个问题,但我找不到任何答案来说明为什么会发生这种情况。

我只是想知道是否有人知道为什么会这样。对多态关联 ID 是否有某种锁定?为什么我不能更改关联?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord associations polymorphic-associations


    【解决方案1】:

    这应该可以工作

    interaction.interactionable = customer
    interaction.save
    

    【讨论】:

    • 谢谢!应该考虑尝试一下。现在要了解为什么会这样……关联 ID 上是否存在某种锁定?
    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多