我有两种类型的类:
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/