EDIT: жаль, что я забыл упомянуть, что я использовал Mongoid тех field
были Mongoid техполе доступа дети-классы
У меня есть приложение рельсы, которое отвечает за создание документов Word (и заменяя некоторые переменные внутри)
Так что у меня много DocumentEtude::xxxx
классов, суперкласс базового класса DocumentEtude
(на английском языке) ProjectDocument
class DocumentEtude
include Mongoid::Document
field :shared_field
class DocumentEtude:xxxx < DocumentEtude
field :only_in_xxxx_field
для того, чтобы сохранить свое здравомыслие, я хотел бы иметь всю в riables в одном месте, и сделать что-то вроде этого
class DocumentEtude
...
def variables
vars = {}
case _type
when 'DocumentEtude::xxxxx', 'DocumentEtude::yyyyyy', 'DocumentEtude::zzzzzz'
vars.merge!({
"some_var" => shared_field,
"some_var2" => only_in_xxxx_field
...
end
def generate_document
# Code that uses the variables defined before
end
Теперь проблема заключается в том, что я объявляю этот метод внутри DocumentEtude, однако мне нужно открыть несколько полей, которые только объявленным в дочерних классах (only_in_xxxx_field
, например) , но, по-видимому, Ruby не может их найти. Любая идея, как я мог это сделать?
Можете ли вы привести пример того, как вы хотите получить к ним доступ? – Edward
Я повторно задал свой вопрос. Например, у меня может быть «DocumentEtude :: Bill», где у меня есть дополнительные поля «цена», «налог» и т. Д. И я хотел бы поместить эти переменные внутри хэша (который затем используется для замены содержимого в xml мои слова документы) –
Есть ли что-то не так с методом класса 'fields' или методом экземпляров' attributes'? Разве вы не можете начать с них и отфильтровывать обычных подозреваемых? –