Rails ActiveRecord - 更新多态id

时间:2013-04-25 05:59:11

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

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

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

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

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

我得到了这个工作,因为我决定稍微改变一下这个问题,但我找不到任何答案,确切地知道为什么会发生这种情况。

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

1 个答案:

答案 0 :(得分:1)

这应该有效

interaction.interactionable = customer
interaction.save