Using before_filter to load owner objects

We’re trying to secure our application and someone yesterday suggested
a good idea.

Say we have blogs that belog to users our models would be something
like

class User < ActiveRecord::Base
has_many :blogs

end

class Blog <ActiveRecord::Base
belongs_to :user

end

we already have an authentication system inplace and on top of that we
have been doing something like

@blog = Blog.find(:first, :conditions => [“user_id = ?”,
session[:user_id]]);

but someone suggested using something like

before_filter {|cntrlr| cntrlr.user = User.find(session[:user_id]) }

in the controller so that we could make a call like

@blog = @user.blogs.find(:first)

(Actually they suggested that we place it in the application.rb but
not all of our objects have users.)

However, if we place it in the blog controller, like:

class NotebooksController < ApplicationController

before_filter { |ctrl| crtl.user = User.find(session[:user_id]) }

end

we get the folowing error:

undefined method `owner=' for NotebooksController:Class

I’m still a little new to this so I don’t really understand what’s
going on here or how to make it work (assuming that I can and the
person who suggested this isn’t leading me up the path). I understand
that there isn’t an ‘owner=’ function defined for the controller, but
shouldn’t ther be one for the model, or am I completely lost?

Dale

Dale,

Where are you calling ‘.owner’?

If you are trying to get the User of a specific Blog associations
work like this:

User.find(:first).blogs # returns an Array of Blog

Blog.find(:first).user # returns the User that the Blog belongs to.

No, ‘owner’ method is created by using has_many/belongs_to.

-christos