2012-05-31 11 views
9

muszę zastąpić nazwę związku, tu jest mój model:szyny, jak alias relacji w modelu?

class User < ActiveRecord::Base 

    has_many :class_rooms_member_ships 

    has_many :class_rooms 
    has_many :class_rooms, :through=> :class_rooms_member_ships 

end 

teraz muszę inną nazwę w użyciu, gdy chcę uzyskać class_rooms :through=> :class_rooms_member_ships

w jaki sposób można to osiągnąć:

user.class_rooms 
user.class_rooms_through 

Każdy pomysł?

+0

Czy sprawdziłeś http://stackoverflow.com/questions/1163032/rails-has-many-with-alias-name? – zsquare

+0

, ale mój przypadek jest trochę inny, używam has_many przez – simo

+0

Nadal to samo. – zsquare

Odpowiedz

12
has_many :classrooms_though_memberships, :through=> :class_rooms_member_ships, 
            :class_name => 'ClassRoom', 
            :foreign_key => 'class_room_id', 
            :source => :class_room 

to powinno działać.

+0

dokładnie działało dobrze, wydaje się, że brakowało źródła, dzięki – simo

+0

'nazwa_klasy' i' klucz_nazwy' nie powinny być konieczne, 'źródło' określa nazwę relacji. – elactic

0

Coś jak to powinno działać:

has_many :classrooms_though_memberships, :through=> :class_rooms_member_ships, 
             :class_name => 'ClassRoom', 
             :foreign_key => 'class_room_id' 
+0

próbowałem go, ale mam ten błąd: ActiveRecord :: HasManyThroughSourceAssociationNotFoundError w ClassRoomsMemberShipsController Wskaźnik Nie można znaleźć stowarzyszenie Źródło (-a): classrooms_though_membership lub: classrooms_though_memberships w modelu ClassRoomsMemberShip. Wypróbuj 'has_many: classrooms_though_memberships,: through =>: class_rooms_member_ships,: source =>'. Czy to jeden z? – simo

Powiązane problemy