Я могу сделать следующее на консоли рельсов:
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"]
, но мне все еще интересно, есть ли способ заставить этот другой метод вести себя.