在自定义rake任务中包含rails datetime helper

时间:2012-05-20 03:12:32

标签: ruby-on-rails

我想创建一个rake任务来填充产品的详细信息,但产品必须是随机的,以便格式化,以便以后根据日期对其进行排序。我想在其中包含框架提供的datehelper,但我似乎对此没有任何想法。如何才能做到这一点。我的自定义rake任务看起来像这样;

namespace :db do
desc "Filling the data with  products"
  task :fill_products do 
    [{:name => "1 Galon milk", :price => 2.99, :released => Time.now.to_datetime},
    {:name => "Oh's Cereal'", :price => 3.95, :released => 1.year.ago},
    {:name => "Red T-Shirt", :price => 12.49, :released => 2.years.ago},
    {:name => "Settler's of Catan'", :price => 29.95, :released => 2.months.ago},
    {:name => "Video Game Disc", :price => 29.95, :released => 5.moths.ago},
    {:name => "DVD Player", :price => 79.99, :released => 88.days.ago},
    {:name => "Oak Coffee Table", :price => 223.99, :released => 499.days.ago},
    {:name => "Video Game Console", :price => 299.95, :released => 982.days.ago},
    {:name => "Black Leather Couch", :price => 399.99, :released => 1092.days.ago}
    ].each do |attr|
      Product.create!(attr)
    end
  end
end

但是当我为任务运行rake命令时,它给出了undefined method 'year' for 1:Fixnum的错误,我想这个错误是由于它无法访问rails提供的日期帮助器方法。那么如何包含帮助程序来启用支持。

3 个答案:

答案 0 :(得分:1)

尝试使您的任务依赖于:环境Rails的任务:

task :fill_products => :environment do
  # ...
end

让我们看看会发生什么......

答案 1 :(得分:0)

试试吧,我认为它会正常工作,首先在你的application.rb中的autoload_paths中添加lib文件

config.autoload_paths += %W(#{config.root}/lib)

然后做以下事情

task :fill_products => :environment do
     # ...
end

答案 2 :(得分:0)

仅供参考,你在线高度拼错了5.months.ago。

相关问题