Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在自定义rake任务中包括rails datetime助手_Ruby On Rails - Fatal编程技术网

Ruby on rails 在自定义rake任务中包括rails datetime助手

Ruby on rails 在自定义rake任务中包括rails datetime助手,ruby-on-rails,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, :release

我想创建一个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命令时,它给我的错误是1:Fixnum的
未定义的方法'year',我想这个错误是由于它无法访问rails提供的date helper方法。因此,我如何包含帮助程序以启用支持。

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

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

让我们看看会发生什么…

试试看,我认为会很好,首先在应用程序的自动加载路径中添加lib文件。rb

config.autoload_paths += %W(#{config.root}/lib)
然后做以下事情

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

仅供参考,您在第八行拼错了5.moths.ago。

也不起作用。因此,我必须创建代码来通过db/seeds.rb进行种子设定