У меня есть объект в настоящее время:рубин массив объектов ... или хэш
class Items
attr_accessor :item_id, :name, :description, :rating
def initialize(options = {})
options.each {
|k,v|
self.send("#{k.to_s}=".intern, v)
}
end
end
Я его, назначаемые отдельных объектов в массив ...
@result = []
some loop>>
@result << Items.new(options[:name] => 'name', options[:description] => 'blah')
end loop>>
Но вместо назначения My особый объект к массиву ... как я могу сделать сам объект коллекцией?
В основном хотят иметь объект таким образом, чтобы я мог определить методы, такие как
def self.names
@items.each do |item|
item.name
end
end
Я надеюсь, что имеет смысл, возможно, я с видом на какой-то грандиозный план, который сделает мою жизнь гораздо проще в 2 линии.
есть способ сделать так, чтобы все атрибуты элементов автоматически велись, нравится метод имен? IE. Вызов .description возвращает то же самое, что и .names ...? – holden
Если вы хотите получить adventuresome, вы можете либо построить эти методы динамически, либо использовать метод_missing для вызова вызовов. – tadman
Могу ли я использовать Ruby mixins для добавления таких функций ко всем массивам, содержащим объекты ActiveRecord? Некоторые указатели будут полезны. – Sanjay