NoMethodError: закрытый метод `desc 'вызван для # <Item>(ошибка пространства имен?) - PullRequest
0 голосов
/ 11 июля 2019

Я могу сделать следующее на консоли рельсов:

item = FactoryBot.create(:item)

, который создает элемент с кучей полей, в том числе, к сожалению, с именем desc.

Так что теперь, когда я пытаюсь получить доступ к item.desc, я получаю эту ошибку:

NoMethodError: private method `desc' called for #<Item:0x000000073b1da0>
    from vendor/ruby/2.1.0/gems/activemodel-4.2.11.1/lib/active_model/attribute_methods.rb:430:in `method_missing'
    from (irb):44
    from vendor/ruby/2.1.0/gems/railties-4.2.11.1/lib/rails/commands/console.rb:110:in `start'
    from vendor/ruby/2.1.0/gems/railties-4.2.11.1/lib/rails/commands/console.rb:9:in `start'
    from vendor/ruby/2.1.0/gems/railties-4.2.11.1/lib/rails/commands/commands_tasks.rb:68:in `console'
    from vendor/ruby/2.1.0/gems/railties-4.2.11.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from vendor/ruby/2.1.0/gems/railties-4.2.11.1/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Любое другое поле работает нормально, и если я просто наберу item на консоли, оно покажет мне все поля, включая desc.

Я предполагаю, что проблема в том, что когда я вызываю item.desc, что-то запутывается и вызывает другой метод desc, который является закрытым и предположительно принадлежит Rails.

Но я совсем не уверен, что с этим делать? Я не могу переименовать наше локальное поле desc для элементов. Так как мне заставить мое поле хорошо играть этим другим методом?

ETA: я могу получить доступ к полю описания с помощью item["desc"], но мне все еще интересно, есть ли способ заставить этот другой метод вести себя.

...