# Weird session behavior

**URL:** <https://www.ruby-forum.com/t/weird-session-behavior/124373>\
**Category:** Rails\
**Created:** [December 28, 2007, 4:14am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373 "2007-12-28T04:14:44Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [December 28, 2007, 4:14am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/1 "2007-12-28T04:14:44Z")

</div>

Hey guys,

I’m having a hard time with some weird behavior in my application.  
Every time I logout a particular has\_many relationship seems broken.  
When I first login, my relationship user.profile.comments works as  
expected, but when I logout and login with another user, I get:

NoMethodError in ProfileController#show  
undefined method `comments’ for #Profile:0x46ff26c

My Models:  
class User \< ActiveRecord::Base  
has\_one :profile  
end

class Profile \< ActiveRecord::Base  
has\_many :comments  
belongs\_to :user  
end

class Comment \< ActiveRecord::Base  
belongs\_to :profile  
end

And here is my login and logout procedure in my controller:

class UserController \< ApplicationController  
def login  
if request.post?  
if session[:user] = User.authenticate(params[:user][:login],  
params[:user][:password])  
flash[:message] = “Login Successful”  
redirect\_to\_stored  
else  
flash[:warn] = “Login Error”  
end  
end  
end

def logout  
session[:user] = nil  
flash[:message] = ‘Logged out’  
redirect\_to :action =\> ‘login’  
end  
end

Any ideas?

Thanks,  
Javier G.

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [December 28, 2007, 4:44am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/2 "2007-12-28T04:44:34Z")

</div>

Have you tried restarting your server? By the looks of things, it’s not  
getting that has\_many definition in Profile.

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [December 28, 2007, 5:19am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/3 "2007-12-28T05:19:04Z")

</div>

Ryan,

Well, if I restart the server it works until I logout and login with  
the same or another user.  
I was wondering if anyone has seen behavior like this before.  
I can code around this with something like  
Comment.find\_all\_by\_profile\_id(@user.profile.id) but I want rails to  
make this relationship transparent.

Thanks,  
Javier

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [December 28, 2007, 5:20am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/4 "2007-12-28T05:20:14Z")

</div>

How are you calling comments at the moment?

On Dec 28, 2007 2:48 PM, Javier G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Thanks,

–  
Ryan B.

> **[frozenplague.net](http://www.frozenplague.net)**
>
> This domain may be for sale!

Feel free to add me to MSN and/or GTalk as this email.

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [January 3, 2008, 6:07am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/5 "2008-01-03T06:07:47Z")

</div>

OK, I think I figured it out, it seems to me that requiring a model  
(ActiveRecord::Base) in a controller throws many things off in rails.  
Has anyone experienced this before? Things such as what I describe  
below don’t seem to work right. What I was doing is something like:  
require ‘user’ at the top of some controller.

Thanks for your help…  
Javier G.

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [December 28, 2007, 5:26am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/6 "2007-12-28T05:26:05Z")

</div>

I am calling it like this:  
@profile.comments where @profile = @user.profile  
here is the subroutine:

def show  
if params[:id]  
@user = User.find\_by\_login(params[:id])  
else  
@user = User.find(current\_user.id)  
end

```
@profile = @user.profile
@photos = Photo.find_all_by_profile_id(@user.profile.id,

```

:conditions =\> [“removed = 0”])  
@photo = Photo.find\_by\_profile\_id(@user.profile.id, :conditions =\>  
[“removed = 0 AND main = 1”])  
if @photo.nil?  
@photo = Photo.find(1)  
end

```
@spot_pages, @spots = paginate_collection(
  @user.spots.find(:all, :order => 'created_at DESC'),
  :page => params[:page])

@buddies = User.find_by_sql(
  ["SELECT u.* FROM buddies_users b, buddies_users c, users u " +
    "WHERE b.buddy_id = ? " +
      "AND u.id = b.user_id " +
      "AND b.user_id = c.buddy_id " +
      "AND b.buddy_id = c.user_id", @user])

@comment_pages, @comments =

```

paginate\_collection(@profile.comments.find(:all,  
:order =\> ‘created\_at DESC’), :page =\> params[:page])  
end

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [January 3, 2008, 4:42pm UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/7 "2008-01-03T16:42:05Z")

</div>

Well, I’ve been working on this for a while, learning as I go and I  
believe that was something I did erroneously.

Thanks.

---

<div class="post-metadata">

**Author:** ![jgoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@jgoi](https://www.ruby-forum.com/u/jgoi)\
**Post date:** [January 3, 2008, 6:09am UTC](https://www.ruby-forum.com/t/weird-session-behavior/124373/8 "2008-01-03T06:09:32Z")

</div>

Why are you requring a model in a controller? All models are included  
automatically.

On Jan 3, 2008 3:37 PM, Javier G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On Dec 27, 2007 8:25 PM, Javier G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > ```
> > end
> > @spot_pages, @spots = paginate_collection(
> > @comment_pages, @comments =
> > 
> > ```
> > 
> > > > Comment.find\_all\_by\_profile\_id(@user.profile.id) but I want rails to
> > > > 
> > > > >
> 
> >

–  
Ryan B.

> **[frozenplague.net](http://www.frozenplague.net)**
>
> This domain may be for sale!

Feel free to add me to MSN and/or GTalk as this email.
