Rails динамически создают модель и используют ее - PullRequest
1 голос
/ 02 мая 2020

Я создаю модель, имя которой является входным аргументом в задаче rake. После задания с граблями я sh использовал модель для вставки данных.

Так, например, я вызываю грабли с помощью ввода Apple и модель Apple создается. Затем я sh смогу выполнить Apple.insert_all([{name: x},{name: y}...]) в другом задании с граблями, но получаю NameError: uninitialized constant Apple

Вот лучшая картина того, что я делаю

Rake::Task["create:fruit"].invoke("Apple") # create model here
Rake::Task["create:insert"].invoke("Apple") # insert data here but getting error

Это Как мне обработать ввод во второй задаче рейка:

task :insert, [:name] do |t, args|
    fruit = args.name 
    fruit.classify.constantize.insert_all(xxx)
end

Любые предложения о том, как go об этом?

1 Ответ

0 голосов
/ 02 мая 2020

Я создал новый проект и попробовал ваш код. Я думаю, что проблема в этой строке

fruit.classify.constantize.insert_all(xxx)

Код ниже работает и создает новые записи. Я использую простую команду rake для ее запуска.

create.rake file

namespace :create do
  desc "TODO"
  task :insert, [:name] do |t, args|
    klass = Object.const_get(args.name)
    klass.create([{name: 'x'},{name: 'y'}])
    p klass.count # testing new records have been saved
  end
end

Rakefile file

require File.expand_path('../config/application', __FILE__)

Rails.application.load_tasks

task :default do
  Rake::Task["create:insert"].invoke("Apple")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...