3

製品の詳細を入力するレーキ タスクを作成したいのですが、後で日付に基づいて並べ替えることができるようにフォーマットするには、製品をランダムにする必要があります。フレームワークによって提供される日付ヘルパーを含めたいのですが、これについては考えていないようです。これはどのように行うことができますか。私のカスタム 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 が提供する日付ヘルパー メソッドにアクセスできないことが原因だと思います。では、ヘルパーを含めてサポートを有効にするにはどうすればよいですか。

4

3 に答える 3

1

参考までに、8 行目の 5.moths.ago のスペルが間違っています。

于 2015-01-13T22:47:25.757 に答える
1

あなたのタスクを :environment Rails のタスクに依存させてみてください:

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

何が起こるか見てみましょう...

于 2012-05-20T17:26:57.830 に答える
0

試してみてください。うまくいくと思います。まず、application.rb の autoload_paths に lib ファイルを追加します。

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

次に、次のことを行います

task :fill_products => :environment do
     # ...
end
于 2012-05-26T18:28:16.583 に答える