首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails STI更改类型

Rails STI更改类型
EN

Stack Overflow用户
提问于 2012-05-31 07:44:19
回答 2查看 1.7K关注 0票数 2

我目前正在处理一个使用STI模型的项目,希望在不创建新记录的情况下将一条记录转换为另一种类型。有一些观察者在创建新模型时被连接到触发,但是我不希望这些观察者触发,并希望保持相同的ID。有没有一种简单的方法可以将记录从一个模型转换到另一个模型,而不使用SQL?

干杯

EN

回答 2

Stack Overflow用户

发布于 2012-07-25 06:52:41

#becomes可以做你想做的事情:

代码语言:javascript
复制
class Foo < ActiveRecord::Base
end

class Bar < Foo
end

class Baz < Foo
end

baz = Baz.create({})
bar = baz.becomes(Bar)

此时,foos表中仍然有baz记录。您必须确保保存bar不会导致问题。

票数 3
EN

Stack Overflow用户

发布于 2014-09-29 10:16:19

正如https://stackoverflow.com/a/26091638/1935918中详细描述的那样,becomes!对我不起作用。相反,我建议使用update_column

代码语言:javascript
复制
  def update
    @company = Company.find(params[:id])
    # This separate step is required to change Single Table Inheritance types
    new_type = params[:company][:type]
    if new_type != @company.type && Company::COMPANY_TYPES.include?(new_type)
      @company.update_column :type, new_type
    end

    @company.update(company_params)
    respond_with(@company)
  end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10825755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档