Ruby on Rails
Monday, November 1, 2010
Hello,
I have a piece of controller code that needs to be dried up. The part between the big comment blocks (####) is the only (!) part of the code that needs to change for various methods.
I couldn't figure it out because if I would wrap this code in a Proc or lambda, the render :nothing => true statement would become void because it doesn't run in the context of the controller anymore.
---
def authenticate
if request.method.eql?(:post)
request = convert_xml_to_object(:request, params[:xml])
# Prepare default response
response = default_response
# Get the account
account = Account.find_by_email request.username
# Check for API credentials
if check_api_credentials(account, request, response)
# _ 12221 baz bar
good = false
# If we find something good, let's actually do something!
########################################################################
good = account.authenticate :password => request.password, :source => request.source
# End of block
########################################################################
# This sound a bit .. Polish :]
if good
set_response_to_100(response)
end
end
# _
respond_to do |format|
format.xml { render :xml => response.to_xml }
end
else
render :nothing => true
end
end
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment