Ich benutze has_many :through
um eine Many-to-many-Assoziation zwischen zwei Entitäten zu spezifizieren, und ich möchte in der Lage sein, das Modell leicht aus der Join-Tabelle abzurufen. Hier sind die wichtigsten Entitäten:
class Group < ActiveRecord::Base
has_many :memberships
has_many :members, :through => :memberships
end
class Member < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
Die Verbindungstabelle heißt "Mitgliedschaften" und hat ein zusätzliches Attribut "admin", das angibt, dass der Benutzer als Gruppenadministrator für diese Gruppe fungieren kann. Hier ist der Migrationsausschnitt:
create_table :memberships do |t|
t.integer :group_id
t.integer :member_id
t.boolean :admin
t.timestamps
end
Nun möchte ich in meinem Controller überprüfen, ob ein bestimmtes Mitglied ein Administrator einer Gruppe ist. Ich habe derzeit den folgenden Code (der funktioniert):
membership = @member.memberships.find_by_group_id(@group.id)
Meine Frage: Gibt es einen eleganteren Weg, das Join-Objekt (eine Mitgliedschaft) abzurufen, als mit der find_by_group_id
Helferin?