Mam nazwany zakres takiego:Co oznacza gwiazdka przed zmienną na liście argumentów named_scope?
named_scope :by_items, lambda |*items| {
:joins => :items,
:conditions => ["items.id in (?)", items.map(&::id)]
}
Jaka jest *item
oznacza? Kiedy zadzwonię pod numer Item.find(:first, ...)
, to działa dobrze. Jeśli spróbuję wywołać za pomocą kolekcji, Item.find(:all, ...)
, to się nie powiedzie.
z innego SO pytanie, wiem podpis ma być:
Order.by_items(item0, item1, ...)
Więc moje pytanie naprawdę jest, w jaki sposób mogę włączyć tablicę do listy argumentów oddzielone przecinkami?
UPDATE0
Od Martin Fowler nauczyłem.
(Korzystanie z „*” w liście argumentów pomaga w pracy ze zmiennymi argumentami w Ruby W liście argumentów * dyski wskazuje Jeśli mogę wywołać inną funkcję z "* dyskami", elementy tablicy dysków są przekazywane jako oddzielne argumenty.)
UPDATE1
Więcej o the "splat" operator.
To magia! –