Problem with find(:all) with conditions

Hi all.. Merry Christmas

having a strange prob.

       @clas=ClassClassteacher.find(:all,:conditions=>"user_id='# {session[:user_id]}'")

      if @clas.nil?         flash[:notice] = 'You are not enrolled in any class'         render :layout=>"special"

      else         puts'@clas has values'

      end when i execute this code even when there are no values for @clas the if @clas.nil? condition does not get executed.But if i change the query to       @clas=ClassClassteacher.find(:first,:conditions=>"user_id='# {session[:user_id]}'")

everything works fine. Can anyone tell me why this is happening.

Thankx.

Hi all.. Merry Christmas

having a strange prob.

      @clas=ClassClassteacher.find(:all,:conditions=>"user_id='# {session[:user_id]}'")

     if @clas.nil?        flash[:notice] = 'You are not enrolled in any class'        render :layout=>"special"

     else        puts'@clas has values'

     end when i execute this code even when there are no values for @clas the if @clas.nil? condition does not get executed.But if i change the query to

Because find :all always returns an array and an empty array is not nil

     @clas=ClassClassteacher.find(:first,:conditions=>"user_id='# {session[:user_id]}'")

because find :first returns a single object or nil

Fred

PS: interpolating stuff in your conditions like that is yucky. You
could also probably make the whole thing flow more nicely with an
appropriate association/named_scope