2013-03-20 19 views
5

DHH schrieb eine article befürworten für die Verwendung von Bedenken. Es scheint eine gute Übung zu sein und in vielen Fällen funktionieren sie gut mit meiner App. Es gibt mehrere Fälle jedoch, in denen mehrere Modelle haben ähnliche, aber etwas andere Methoden, wie zum Beispiel:Schienen: Ein Argument an ein Anliegen übergeben

def find_or_create_membership 
    user_membership = User::Membership.where(:group_id => self.group_id, 
    :user_id => self.invitee_id).first_or_create(:status => "invited") 
end 

und:

def find_or_create_membership 
    user_membership = User::Membership.where(:group_id => self.group_id, 
    :user_id => self.invitee_id).first_or_create(:status => "declined") 
end 

Diese Verfahren sind identisch, außer daß die ersten Sätze status zu „eingeladen“ und der zweite "abgelehnt". Gibt es eine Möglichkeit, über ein Anliegen diese Methoden zu diskutieren?

+0

Eine Sache, die ich dafür gemacht habe, ist zu versuchen, zu simulieren, was zum Beispiel eine Klassenmethode macht, die ein Argument nimmt. Hier ist das Entwicklungsbeispiel (https://github.com/plataformatec/devise/blob/master/lib/devise/models.rb#L83), und hier ist zum Beispiel, was ich in einem meiner Projekte getan habe: https://github.com/pjambet/beech-server/blob/master/app/models/concerns/searchable.rb Bitte beachten Sie, dass meine Art, mein Tun zu tun, völlig falsch und dumm ist, dies war nur ein Versuch, das Gerät (und andere) nachzuahmen) Verhalten – pjam

+0

Wie übergibt man den Parameter? – nullnullnull

+0

Sie können die Methode in der Klasse aufrufen und Argumente wie gewohnt übergeben: siehe https://github.com/pjambet/beech-server/blob/master/app/models/user.rb#L40 – pjam

Antwort

0

Das könnte Sie interessieren: Paramix.

Habe ich aber nie selbst benutzt. Weiß nicht, riecht wie eine Falsch-Gute-Idee ©.

Verwandte Themen