On Fri, 23 Jun 2006 10:12:34 +0200, Stefano C. wrote:
Beh, ci sara’ un motivo per cui inizialmente esistevano i
singoli metodi e poi a un certo punto hanno deciso di
consolidarli in uno solo…
Tecnicamente esistono tutt’ora, se vai a vedere come girano sotto il
cofano.
Solo che spesso non fanno la cosa “ovvia”, ecco tutto.
Oltretutto, cosa ti impedisce di aggiungere a ActionController::Base il
tuo metodo “render_yaml” e poi chiamarlo dai tuoi controller? Questo
e’ il punto che piu’ mi sfugge del tuo scazzo
render in se e per se viola l’OCP. Questo mi pare abbastanza evidente.
Il fatto che poi ci si possa girare attorno, non significhi che ci sia
la violazione. E non mi sembra improbabile ritenere che sia un metodo
che uno possa volere estendere. Poi per carità, funzionare funziona e
tutto. ma…
Model.find(1,2,3)
Model.find([1,2,3])
Uguali
Ok. Diciamo che Ruby rende facilissimo fare collassare i concetti.
Diciamo che più uno vede “magic” (imho) e più gli viene il dubbio che
una cosa sia non necessariamente figa.
Voglio dire… al di la del fatto che funziona (e quindi non protesto)
siamo sicuri che avere i modificatori :first e :all che modificano il
modo (radicalmente) in cui find funzioni non sia meglio di avere un
find che prende gli id
find_all che prende condizioni
find_first (come sopra)
Mi sembra “magia gratuita” visto che find non è altro che
def find(*args)
options = extract_options_from_args!(args)
validate_find_options(options)
set_readonly_option!(options)
case args.first
when :first then find_initial(options)
when :all then find_every(options)
else find_from_ids(args, options)
end
end
Beh, mi pare molto semplice (e pure intuitivo): se gli chiedi di
trovare UN record, ti
ritorna un record; se gli chiedi di trovare un elenco di record, ti
ritorna un elenco di record.
Io con Rails ci lavoro quasi tutti i giorni (negli altri purtroppo mi
tocca PHP) e devo dire
che “fila” come poche cose al mondo.
Il fatto che una cosa fili, non significa che ci si possa chiedere del
perchè di certe scelte.