@session's scope in the model

harper wrote:

> If you give an > example of what you are trying to do in the model, we may be able to > point you in the right direction.

Thanks for the reply...i wanted to give the admin of the site a possibility to see the pages that were marked unpublished, that for regular users, were impossible to see.

((publish - tinyint(1) column for any page in the Page model, that marks whether the page is published or unpublished. only the published are seen by everyone))

to do this, i found a great (with_scope) method, that gives me exactly what i wanted,

  def self.find(*args)           if !@session['user'] ### errors populated here       self.with_scope(:find => { :conditions => "publish=1" }) do       super(*args)         end     else       super(*args)     end   end

except, now i get nil errors from the session variable in the first part of the clause. how do get this working, if i need to check the session to see if it is the admin, but can't use the session in the model? can/should this be defined in the controller? either way, much appreciation your way...thanks,

harp

-- Posted via http://www.ruby-forum.com/.

There are a couple of plugins floating around that also need to pull the user id from the session, so far i've seen two ways to do it.

The first is to put a before_filter in the Application controller that sets a User class variable to the current user id. The other uses a Thread local variable.

The first one works fine in most cases, but would probably break if Rails ever becomes threaded.

class User   cattr_accessor :current_user .... end

--- application.rb --- before_filter :set_current_user

def set_current_user   User.current_user = session['user'] end

The current user will get set at the beginning of each request, so you can be sure that it will be correct.

_Kevin