weird session behavior

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 Godinez

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

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

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 Godinez

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

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

Thanks.