Я создаю генератор рельсов:

class TaggableGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  hook_for :orm, :as => "model"
end

Все работает нормально, но я хотел бы установить поля, созданные в моделях, и создать несколько моделей, я ничего не могу найти о том, как это сделать (я получил приведенный выше код, глядя на генераторы устройств), желательно, чтобы я хотел это для меня или общий (но это не так важно).

1
errorhandler 9 Апр 2011 в 12:25
Вы смотрели на генераторы в драгоценном камне изящных генераторов?
 – 
apneadiving
9 Апр 2011 в 12:58
1
Да, но я до сих пор не могу прийти в себя
 – 
errorhandler
9 Апр 2011 в 13:44

1 ответ

Вот несколько ссылок, которые могут вам помочь:
http://railscasts.com/episodes/218-making-generators-in -рельсы-3
http://guides.rubyonrails.org/generators.html

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

class AssetsGenerator < Rails::Generators::NamedBase
  source_root File.expand_path("../templates", __FILE__)

  def copy_stylesheet
    copy_file "stylesheet.css", File.join('app/assets/stylesheets', class_path, "#{file_name}.css")
  end
end

Файл copy_file исходит от Thor, вы можете увидеть список доступных методов в справочнике по Thor: http: //textmate.rubyforge.org/thor/Thor/Actions.html

1
Schmurfy 10 Июл 2011 в 14:25