2013-03-20 14 views
5

DHH ha scritto un article sostenendo l'uso di preoccupazioni. Sembra una buona pratica e, in molti casi, funzionano bene con la mia app. Ci sono diversi casi, tuttavia, in cui più modelli hanno metodi simili, ma leggermente diverse, come ad esempio:Rails: passaggio di un argomento a una preoccupazione

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 

e:

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 

Questi metodi sono identici, salvo che il primo set status a "invitati" e il secondo a "rifiutato". C'è un modo per passare una discussione a questi metodi attraverso una preoccupazione?

+0

Una cosa che ho fatto è cercare di imitare ciò che l'idea sta facendo, ad esempio definendo un metodo di classe che prende argomento. Ecco l'esempio di idea (https://github.com/plataformatec/devise/blob/master/lib/devise/models.rb#L83), ed ecco ad esempio cosa ho fatto in uno dei miei progetti: https://github.com/pjambet/beech-server/blob/master/app/models/concerns/searchable.rb Si prega di notare che il mio modo di fare il mio è completamente sbagliato e stupido, questo era solo un tentativo di imitare l'idea (e altri) comportamento – pjam

+0

Come si passa il parametro? – nullnullnull

+0

Puoi chiamare il metodo nella classe e passare argomenti come faresti normalmente: vedi https://github.com/pjambet/beech-server/blob/master/app/models/user.rb#L40 – pjam

risposta

0

Potresti essere interessato a Paramix.

Mai usato da solo, però. Non so, odora come una falsa idea buona ©.

Problemi correlati