AR association question

Hi there,

I have a favorites table in my DB that has a user_id and restaurant_id
columns.

In my restaurant controller I have a user ID and need to get all the
restaurants that the user has marked as favorites. I would like to do
something similiar to:

@results = Favorite.find_all_by_user_id(current_user.id)

This however returns a list of “favorites” not “restaurants”. What is
the best way to get the list of restaurants?

Thanks,
steve

Or if you don’t:

@results =
Restaurant.find_all_by_id(Favorite.find_all_by_user_id(current_user.id).map
{|x| x.restaurant_id})

On Apr 15, 3:47 pm, “[email protected]” <ESPN3.DL-

@results = User.find(current_user.id).restaurants

That will work if you have the habtm relationships set up correctly

On Apr 15, 3:04 pm, Steve G. [email protected]

On 16 Apr 2008, at 15:16, Steve G. wrote:

Thanks for the help. The first suggestion didn’t work - the second one
did however. I have the habtm relationships set up as follows:

You don’t have any hatbm relation ships.

Add has_many :restaurants, :through => :favourites to User and you
will be able to do things like User.find(…).restaurants.

Fred

Thanks for the help. The first suggestion didn’t work - the second one
did however. I have the habtm relationships set up as follows:

class Favorite < ActiveRecord::Base
belongs_to :restaurant
belongs_to :user

class User < ActiveRecord::Base
has_many :favorites, :dependent => :destroy

class Restaurant < ActiveRecord::Base
has_many :favorites , :dependent => :destroy

Any ideas why the first solution doesn’t work?(it says there is not such
method “Restaurants”)

Thanks,
steve

[email protected] wrote:

@results = User.find(current_user.id).restaurants

That will work if you have the habtm relationships set up correctly

On Apr 15, 3:04�pm, Steve G. [email protected]

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs