2017-02-18 18 views
0

сказать я модель Rails создан как:явно `attr_writer` для моделей Rails, чтобы добавить YARD документ

rails generate model SuperModel name:string 

Затем она создает миграцию на новую таблицу:

create_table 'super_models' |t| 
    t.string 'name' 
    ... 
end 

и класс модели:

class SuperModel < ActiveRecord::Base ... 

я знаю, что рельсы генерирует несколько методов для имени атрибута похоже на то, что я могу сделать вручную:

class SuperModel < ActiveRecord::Base 
    # YARD doc 
    # @attr [String] ... 
    attr_writer :name 
end 

, который затем может быть подобран для проектной документации по Doc-инструментов и автозавершения, и в месте документации поиска с IntelliJ (+ RubyMine и т.д.)

это может быть XY проблема, но если я действительно добавляю атрибуты attr_writer вручную, как это влияет на то, как работают ActiveRecord и другие сгенерированные методы, такие как super_model.changed?. я хочу скомпилировать языковые средства, такие как проверка типов/автозаполнение и документы в среде IDE.

+0

Вы можете добавить ярлыки '@ attr' без явного добавления геттера/сеттера. Это было какое-то время, так как я использовал Rubymine, но я действительно считаю, что он действительно читает схему и берет атрибуты. – max

ответ

0

attr_reader, attr_writer и attr_accessor - это методы метапрограммирования, которые добавляют сеттеры и геттеры. Таким образом, использование их на модели может сжимать установки ActiveModel, которые могут испортить такие вещи, как проверка пятен и ActiveModel::Dirty.

 Смежные вопросы

  • Нет связанных вопросов^_^