On Feb 12, 9:21 am, Frederick Cheung <[email protected]>
wrote:
> On Feb 11, 10:40 pm, msaspence <[email protected]> wrote:
>
>
>
>
>
>
>
>
>
> > I'm want to restrict access to an object show action to the owner
>
> > in my action I have this
>
> > def show
> >     @thing = Thing.find(params[:id])
> >     if current_user && @thing.owner == current_user
> >       respond_to do |format|
> >         format.json  { render :json => @thing }
> >       end
> >     else
> >       render :status => :forbidden, :text => "API requires
> > authentication for the minute."
> >     end
> > end
>
> > Which works in the browser, however when running functional tests even
> > though @thing.owner is the same user as current_user it is not the
> > same object so the comparison fails as I see it I have a few options
> > but wanted to try and gauge what people feel is the best way
>
> > 1) adjust the test setup so the logged in user is the same object and
> > the comparison returns true (I have no idea how I would go about doing
> > this)
>
> > 2) just do current_user.id == @thing.owner.id, this seems like the
> > most obvious and easiest but somehow less elegant
>
> That is what == on two active record objects do (plus a little bit of
> subtlety around new, unsaved objects).
> How are you setting up the test?
>
> Fred

I'm using the Authlogic so have followed the instructions here
http://rdoc.info/github/binarylogic/authlogic/master/Authlogic/TestCase

Matt

>
>
>
>
>
>
>
>
>
> > 3) write my own comparison method on my user class, either:
>
> > def is_equal_to user(user)
> >   return user.id == self.id
> > end
>
> > or:
>
> > def is_current_user
> >   return current_user.id == self.id
> > end
>
> > 4) something else I haven't thought about

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to