Как я могу получить доступ к активным классам записей для создания записей из модуля / класса в папке lib?

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть приложение Rails 4.2. Я хочу создать скрипт в папке lib, который я буду использовать для создания записей в моей базе данных. Итак, гипотетически:

lib/user_builder.rb

 require 'rubygems'
require 'active_record'
require './app/models/application_record.rb'
require './app/models/client.rb'

module UserTheory
  class UserBuilder
    def initialize
      user = User.find_or_initialize_by(id: 1)
      user.name = 'Bob'
      user.save
    end
  end
end 
  

Мне потребовались эти файлы, потому что я получал NameErrors об этих классах. Теперь я получаю другую ошибку:

/usr/local/bundle/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/connection_pool.rb:570:in `retrieve_connection': No connection pool for User (ActiveRecord::ConnectionNotEstablished)

очевидно, что я иду по этому неправильному пути.

Комментарии:

1. вместо того, чтобы помещать его в lib , попробуйте использовать каталог внутри, app/ например app/services . Тогда вам не понадобятся требования, и автозагрузка должна работать должным образом.

2. Почему вы просто не используете db/seeds.rb файл?

3. На самом деле, вы можете использовать rake tasks для выполнения вашего дела

4. db/seeds.rb вот как это сделать.