gpt4 book ai didi

ruby-on-rails - 使用单表继承更改 Rails 中 ActiveRecord 类的类型

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:47 26 4
gpt4 key购买 nike

我有两种类型的类:

BaseUser < ActiveRecord::Base 

User < BaseUser

使用 Authlogic 的身份验证系统作为身份验证。这种继承是使用Single Table Inheritance实现的

如果有新用户注册,我会把他注册为用户。但是,如果我已经有一个具有相同电子邮件的 BaseUser,我想将该 BaseUser 更改为数据库中的一个用户,而不是简单地将所有数据从 BaseUser 复制到用户并创建一个新用户(即使用一个新的ID)。这可能吗?谢谢。

最佳答案

Steve 的答案有效,但由于调用 save 时实例属于 BaseUser 类,因此 User 中定义的验证和回调将不会运行。您可能希望使用 becomes 转换实例方法:

user = BaseUser.where(email: "user@example.com").first_or_initialize
user = user.becomes(User) # convert to instance from BaseUser to User
user.type = "User"
user.save!

关于ruby-on-rails - 使用单表继承更改 Rails 中 ActiveRecord 类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com