3 Stimmen

Was ist der einfachste Weg, um das Verknüpfungsmodell für zwei Entitäten zu finden, wenn man has_many :through

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X