ruby on rails - هل توفر مهام rake rake إمكانية الوصول إلى نماذج ActiveRecord؟




ruby-on-rails task (3)

أحاول إنشاء مهمة أشعل النار مخصصة ، ولكن يبدو أنني لا أملك حق الوصول إلى نماذجي. اعتقدت أن هذا شيء ضمنيًا مع مهمة القضبان.

لدي الشفرة التالية في lib / tasks / test.rake:

namespace :test do
  task :new_task do
    puts Parent.all.inspect
  end
end

وهنا يظهر نموذج والديّ:

class Parent < ActiveRecord::Base
  has_many :children
end

إنه مثال بسيط جدًا ، ولكن أتلقى الخطأ التالي:

/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent

(See full trace by running task with --trace)

أيه أفكار؟ شكر


: تم استدعاء تبعية البيئة بشكل صحيح تمامًا ، ولكن لا يزال قد لا يعرف محرك السيارة عن الأحجار الكريمة الأخرى التي تعتمد عليها نماذجك - في حالة واحدة من الألغام ، "protected_attributes".

الجواب هو:

bundle exec rake test:new_task

هذا يضمن أن البيئة تشمل أي الأحجار الكريمة المحددة في Gemfile الخاص بك.


تأكد من ذلك ، يجب أن تبدو المهمة كما يلي:

namespace :test do
  task :new_task => :environment do
    puts Parent.all.inspect
  end
end

لاحظ => :environment إضافة تبعية => :environment إلى المهمة


قد تحتاج إلى طلب التهيئة الخاصة بك (والتي يجب أن تحدد جميع نماذجك المطلوبة وما إلى ذلك)

على سبيل المثال:

require 'config/environment'

بدلاً من ذلك ، يمكنك فقط طلب كل منها بشكل منفصل ، ولكن قد يكون لديك مشكلات في البيئة لا يتم إعدادها AR إلخ)







task