Ruby on Rails Friday, September 2, 2011



On Fri, Sep 2, 2011 at 4:35 PM, 7stud -- <lists@ruby-forum.com> wrote:
I have a correct_user() before filter that passes all my tests:

class UsersController < ApplicationController
 before_filter :authenticate, :only => [:edit, :update]
 before_filter :correct_user, :only => [:edit, :update]

...
...

 private
   def correct_user
     user = User.find(params[:id])
     redirect_to(root_path) unless get_user_from_session == user
   end


But if I change the before filter to this:

  def correct_user
     redirect_to(root_path) unless get_user_from_session.id.to_s ==
params[:id]
   end

all kinds of things start failing.  Here's an example:

 1) UsersController GET edit should be successful
    Failure/Error: response.should be_success
      expected success? to return true, got false
    # ./spec/controllers/users_controller_spec.rb:15:in `block (3
levels) in <top (required)>'


and the test:


describe UsersController do
 render_views

 describe "GET edit" do
   before(:each) do
     @user = Factory(:user)
     test_sign_in(@user)
   end

   it "should be successful" do
     get :edit, :id => @user
     response.should be_success
   end


What is the difference between:

   def correct_user
     user = User.find(params[:id])
     redirect_to(root_path) unless get_user_from_session == user
   end

and:

  def correct_user
     redirect_to(root_path) unless get_user_from_session.id.to_s ==
params[:id]
   end


params[:id] may not always be an integer, it can be '123-user'
 
--
Posted via http://www.ruby-forum.com/.

--
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.




--
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

--
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.

No comments:

Post a Comment