Skip to content

Commit

Permalink
streamlined save_with_permissions methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ethn committed May 13, 2011
1 parent c2b08c1 commit 567ebf4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 18 deletions.
34 changes: 17 additions & 17 deletions lib/cardlib/permissions.rb
Expand Up @@ -48,29 +48,29 @@ def destroy_with_permissions!
destroy_without_permissions!
end

def save_with_permissions(perform_checking=true)
Rails.logger.debug "Card#save_with_permissions"
if perform_checking && approved? || !perform_checking
save_without_permissions(perform_checking)
else
raise ::Card::PermissionDenied.new(self)
end
def save_with_permissions(perform_checking = true) #checking is needed for update_attribute, evidently. not sure I like it...
Rails.logger.debug "Card#save_with_permissions!"
run_checked_save :save_without_permissions, perform_checking
end

def save_with_permissions!(perform_checking = true)
Rails.logger.debug "Card#save_with_permissions!", perform_checking
run_checked_save :save_without_permissions!
end

def save_with_permissions!
Rails.logger.debug "Card#save_with_permissions!"
if approved?
begin
save_without_permissions!
rescue Exception => e
Rails.logger.info "save_with_perm:#{e.message} #{name} #{Kernel.caller.join("\n")}"
raise e
end
def run_checked_save(method, perform_checking = true)
if !perform_checking || approved?
begin
self.send(method)
rescue Exception => e
Rails.logger.info "#{method}:#{e.message} #{name} #{Kernel.caller.join("\n")}"
raise Wagn::Oops, "error saving #{self.name}: #{e.message}, #{e.backtrace}"
end
else
raise ::Card::PermissionDenied.new(self)
end
end

def approved?
self.operation_approved = true
self.permission_errors = []
Expand Down
5 changes: 4 additions & 1 deletion spec/models/card/trash_spec.rb
Expand Up @@ -33,7 +33,10 @@
end

describe User, "without revisions" do
before do User.as :wagbot ; @c = Card.find_by_name("Sample User"); end
before do
User.as :wagbot
@c = Card.create! :name=>'User Must Die', :type=>'User'
end
it "should be removable" do
@c.destroy!.should be_true
end
Expand Down

0 comments on commit 567ebf4

Please sign in to comment.