Mam taką tabelę dla ulubionych przedmiotów użytkownika:
[code]class CreateFavorites < ActiveRecord::Migration
def self.up
create_table :favorites do |t|
t.column :user_id, :integer
t.column :favorable_type, :string, :limit => 30
t.column :favorable_id, :integer
t.timestamps
end
end
def self.down
drop_table :favorites
end
end[/code]
Model Favorite:
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :favorable, :polymorphic => true
end
Model użytkownika wygląda tak:
class User < ActiveRecord::Base
has_many :favorites
end
Jak wywołuję taki kod:
@current_user.favorites.each do |favorite|
puts favorite.favorable.class
end
to dostają nazwy klas jakie może użytkownik odznaczać sobie jako ulubione np. Car, House. Teraz nie mogę dojść jak zrobić, żeby wypisać ulubione samochody oraz domki w taki sposób:
[code] @current_user.cars.each do |car|
puts car.name
end
@current_user.house.each do |house|
puts house.name
end[/code]
da się to jakoś sprytnie zrobić? Przeglądałem kod acts_as_favorite, ale coś mi nie wychodzi ze zrobieniem tego tak jak wyżej… Czy jedyną możliwością jest zrobienie metod, które będą filtrować @current_user.favorites w poszukiwaniu tego oczekiwanego typu klasy.
Pozdrawiam.