Я просматриваю код коллег и не могу найти ни одного учебника, где это было использовано. Может кто-нибудь указать мне на некоторые ресурсы, где это было использовано. Это сделало код очень чистым, но я не нашел ссылки на него. Это только часть этого класса. Он включает другие другие методы.Является ли это известным шаблоном диспетчера Rails
class Manager
include ActiveModel::Model
include ActiveModel::Associations
attr_accessor :application_id, :user_id, :user_application_id,.........
belongs_to :application
belongs_to :user_application
belongs_to :user .. more belongs .......
# This method is necessary to enable this ActiveModel Class to be used in views along with Form helpers
def self._reflect_on_association(association) #:nodoc:
_reflections[association.to_sym]
end
def []=(attr, value)
self.send("#{attr}=", value)
end
def [](attr)
multi_attribute_ids = [:some_ids.to_s, :someid2.to_s]
return if multi_attribute_ids.include?(attr)
self.send(attr)
end
def applicant_name
end
-- some more methods
end
Каким будет использование такого «менеджера». Каковы два метода, которые используют self.send здесь. Это общий шаблон в рельсах.
Где мой коллега? – MarsAtomic
'def [] = (attr, value)' и 'def [] (attr)' являются скопированными сеттерами и геттерами. Они вызывается, когда вы выполняете 'manager [: foo]' и 'manager [: foo] = 'bar''. – max
У Ruby есть много таких нечетных методов (например, '+', '==', '<=>'), поскольку большинство операторов - это просто методы. – max