Rake 작업 내에서 Rails ActiveRecord 모델에 액세스하는 방법
rails g task
)도 제공하여 이를 생성합니다.그러나 많은 새로운 Rails 개발자(저 포함)가 Rails를 배울 때 가지고 있는 한 가지 질문은 ActiveRecord 모델에 액세스하거나 데이터베이스 쿼리를 수행하는 데 매우 유용한 Rake 작업에서 Rails 환경에 액세스하는 방법입니다. 이 기사에서는 이를 수행하는 방법을 보여줍니다.
TL; DR
:environment
작업을 사용자 지정 작업에 대한 종속성으로 추가합니다.task count_users: [:environment] do
...
end
긴 답변
다음은
User
라는 이름의 ActiveRecord 모델을 사용하려고 시도하는 간단한 Rake 작업입니다.# lib/tasks/transport.rake
desc "count the number of users in the system"
task :count_users do
puts User.count
end
이 Rake 작업을 있는 그대로 실행하려고 하면 Rails는
NameError
토큰이 무엇을 가리키는지 모르기 때문에 User
오류를 발생시킵니다.bin/rails count_users
rails aborted!
NameError: uninitialized constant User
puts User.count
^^^^^^^^^^^^^^^
Rake 작업에서 ActiveRecord 모델을 사용할 수 있도록 하려면 작업을 실행하기 전에 환경을 로드하도록 Rails에 지시해야 합니다. 이는 Rails 콘솔을 시작할 때 발생하는 것과 유사합니다. Rails 환경을 로드하면 ActiveRecord 모델, 데이터베이스 등에 액세스할 수 있습니다.
Rails는 환경을 로드하는 작업
:environment
을 제공합니다. Rake 용어에서 작업은 작업 전에 수행되어야 하므로 :environment
작업에 종속됩니다.# lib/tasks/transport.rake
desc "count the number of users in the system"
task count_users: [:environment] do
puts User.count
end
이제 rake 작업에서 오류 없이
User
모델에 액세스할 수 있습니다.
Reference
이 문제에 관하여(Rake 작업 내에서 Rails ActiveRecord 모델에 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/software_writer/how-to-access-rails-activerecord-models-inside-a-rake-task-5c76텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)