полиморфное и изменение типа в Rails - PullRequest
1 голос
/ 29 июня 2011

В моем приложении есть модель Users с чем-то вроде

belongs_to :account, :polymorphic => true, :dependent => :destroy

И некоторые специальные типы учетных записей, такие как Admin или Editor

class Admin < ActiveRecord::Base
  has_one :user, :as => :account, :dependent => :destroy
end

class Editor < ActiveRecord::Base
  has_one :user, :as => :account, :dependent => :destroy
end

Есть ли какой-нибудь чистый способ изменить тип пользователя с редактора на администратора? Если я сделаю что-то вроде

admin = Admin.new
User.first.account = admin
user.save
admin.save

В базе данных все еще есть старая запись для типа редактора.

1 Ответ

0 голосов
/ 29 июня 2011

Использование :dependent => :destroy удалит связанный объект, только если сам объект уничтожен.Вы не уничтожаете пользовательскую запись, просто меняете один из ее атрибутов, поэтому эта функция никогда не срабатывает.

Чтобы уничтожить его самостоятельно, сделайте что-то вроде

user = User.first
user.account.destroy
user.account = Admin.create
user.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...