Association Help

Hello,

Let me setup the scenario

class User < ActiveRecord::Base
  belongs_to :house
end

class House < ActiveRecord::Base
  has_many :users
end

My question is, how can i implement the roomates association from the
user model? I'd like to do current_user.roomates and get a list of
current_user.house.users *minus* the current_user.

Thanks!

-Adam

@House.find(:first).users - [current_user]

in your controller somewhere.

Haven't tested this but I'm thinking something like:

class User < ActiveRecord::Base
  belongs_to :house

  def roommates
    User.find(:all,
                  :conditions => ['house.id = ? and user.id <> ?',
self.house, self],
                  :joins => "inner join houses on house.user_id =
users.id")
  end

end

@House.find(:first).users - [current_user]

in your controller somewhere.

I would put it in the models if i was to use a method like this

class User < AR::Base
  belongs_to :house

  def roomates
    house.users - [self]
  end
end

the problem with this aproach is that you cant do anything with the
rooomates apart from seeing them. you have no User.roomates <<
user.new or any of the Ar methods.

So... I would put it into the association, having house as a join
table between Users and Users... something on the lines (and note i
say on the lines because you would probably have to change the
associations you have to accomplish this.) of:

class user

  has_many :roomates, :through => :house, :class_name => 'User'

end