Я использую библиотеку jira-ruby и расширили класс JIRA::Resource::Issue
, как определено ниже.Унаследованный класс не имеет атрибутов?
class ServerRequest < JIRA::Resource::Issue
def requested_os
customfield_11169
end
end
Когда я создаю новый объект ServerRequest
, я не могу получить доступ атрибуты, как я могу, когда объект типа JIRA::Resource::Issue
Ex.
[81] pry(main)> ticket.class
=> JIRA::Resource::Issue
[80] pry(main)> ticket.customfield_11169
=>{"self"=>"http://REDACTED:8080/rest/api/2/customFieldOption/14451",
"value"=>"Linux - CentOS","id"=>"14451"}
[81] pry(main)> request = ServerRequest.new(ticket)
[82] pry(main)> request.class
=> ServerRequest
[83] pry(main)> request.customfield_11169
NoMethodError: undefined method `customfield_11169' for #<ServerRequest:0x005634b57431b0>
from /home/user/.gem/ruby/gems/jira-ruby-1.1.0/lib/jira/base.rb:308:in `method_missing'
Я пытался читать через JIRA::Resource::Base
класса, но я не уверен, что у меня есть четкое понимание того, как это отображение моего метода обращается к классу с атрибутом хэша, или почему мой расширенный класс делает не делать то же самое.
Отличный ответ. Я прочитал метод 'method_missing' и смог определить, что я не создал экземпляр' @ attrs'. Добавление вызова 'super' в метод' initialize' разрешило проблему. – thisguy123