X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fuser.rb;h=d59f35e48d992044462957f2a4527b9f44ab44a8;hb=ee63ea673d609c24eeda4b6f8b973cb55729768f;hp=ff5f34ede7424dfe80c49556a0b0fd9ce71fa410;hpb=85f03f74712cc59441ce6a25c9811c27647fecd6;p=pettanr%2Fpettanr.git diff --git a/app/models/user.rb b/app/models/user.rb index ff5f34ed..d59f35e4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,5 +1,6 @@ class User < ActiveRecord::Base has_one :author + has_one :artist # Include default devise modules. Others available are: # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable @@ -9,10 +10,6 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :id, :name, :password, :password_confirmation, :remember_me , :email - before_create do |r| - r.build_author :name => 'no name' - end - def create_token self.ensure_authentication_token self.save @@ -23,4 +20,26 @@ class User < ActiveRecord::Base self.save end + def destroy + res = false + User.transaction do + self.author.scrolls.each do |scroll| + raise ActiveRecord::Rollback unless scroll.destroy_with_scroll_panel + end + self.author.panels.each do |panel| + raise ActiveRecord::Rollback unless panel.destroy_with_elements + end + if self.artist + self.artist.original_pictures.each do |original_picture| + raise ActiveRecord::Rollback unless original_picture.destroy_with_resource_picture + end + raise ActiveRecord::Rollback unless self.artist.destroy + end + raise ActiveRecord::Rollback unless self.author.destroy + raise ActiveRecord::Rollback unless super + res = true + end + res + end + end