Вероятно, вы путаете переменную экземпляра класса @as
, которая доступна только для методов класса для Person, и переменную экземпляра @as
, которая доступна только для экземпляров этого класса.Я знаю, что даже это объяснение звучит немного сложно.
Каждый объект имеет переменные экземпляра, а класс - это просто тип объекта.Экземпляры этого класса также являются объектами и имеют свои собственные независимые переменные экземпляра.Чтобы получить переменную экземпляра класса из экземпляра класса, вам понадобится метод чтения, как вы определили.Возможно, вы имеете в виду:
def initialize(*args)
super(*args)
# self.class.as returns something like :financial_documents, so use this method
# to return a scope to build in.
send(self.class.as).build
end
То, как вы используете @as
, предполагает, что вы привыкли к чему-то вроде PHP или Perl, где вы можете отменить ссылку, как если бы вы ${$as}
В Ruby вы обычно отменяете ссылки из строки или символа в класс или метод.
Похоже, вы пытаетесь преобразовать символ в вызов метода, и это делается с помощью send
.
Если вы пытались преобразовать строку в класс, вы используете метод constantize
в String, функции среды Rails.