как инициализировать камень рельсов, который добавляет ассоциации к моделям, указанным пользователем - PullRequest
0 голосов
/ 04 января 2012

Я нахожусь в процессе создания драгоценного камня, который должен добавить ассоциации к некоторым моделям, определенным пользователем.

У меня есть файл инициализатора, который можно скопировать в приложение с помощью команды генератора рельсов, и этогде пользователь будет указывать модели для добавления ассоциаций.

BloggyGem.setup do |config|
  config.user = User
  config.post = Post
end

Внутри самоцвета у меня есть это указанное

 opts = BloggyGem.settings
 opts.user.has_many opts.post.to_s.downcase.pluralize.to_sym, 
                   :class_name => opts.post.model_name

 opts.post.belongs_to opts.user.to_s.downcase.singularize.to_sym,
                      :class_name => opts.user.model_name

Мои тесты проходят в моем геме, но рельсыинициализируется немного по-другому, поэтому хотелось быть уверенным в наилучшем способе сделать это.

1 Ответ

0 голосов
/ 04 января 2012

Может быть, вы можете взглянуть на Rails :: Railtie

Когда я писал один из моих гемов, мне нужно было дождаться загрузки всех моделей в моем приложении Rails, прежде чем инициализироватьмоя жемчужинаЯ думаю, это тоже ваша потребность.Я сделал что-то вроде этого:

module GemName
  class Railtie < Rails::Railtie

    config.after_initialize do
      class ActiveRecord::Base
        include GemName::ModelAdditions
        globalize
      end
    end
  end
end

Обратный вызов config.after_initialize отлично сработал для меня!

...