2

ユーザーが求人広告を表示/投稿/返信できる求人広告エンジンを作成して、Railsエンジンを試しています。

メインアプリケーションにはユーザー認証とプロファイルのコードが含まれていますが、私が作成した求人広告機能を処理するエンジンがあります。

次に、クラシファイドエンジンのデータベースにサンプルデータを追加します。そこで、「vendor / plugins / classes / lib /tasks」に「sample_classifieds_data.rake」という名前のrakeファイルを作成し、「vendor / plugins / classes / lib / tasks/sample_classifieds_data」にymlファイルを追加しました。

rakeファイルのコードとサンプルymlファイルはここにあります:http://gist.github.com/216776

ここで問題となるのは、rakeタスクを実行すると、エラーはスローされませんが、値がデータベースに入力されないことです。

何か案は?ところで、それは開発環境であり、データベースは開発データベースです。

同様のrakeタスクを実行して、データベースにサンプルユーザーを追加しました。そのrakeファイル「sample_data.rake」の場所は「lib/tasks」にありました。

4

3 に答える 3

9

Railsエッジでは、このrake db:seed機能を使用してベースにデータを追加できます。コミットを参照してください

使い方はとても簡単です。

ファイルを作成しdb/seeds.rbます。
そして、データベースをシードしたいコードをその中に入れます。

例えば ​​:

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

また、データベースにシードを設定する場合は、次のことを実行できます。rake db:seed

何らかの理由で、エッジ(実稼働環境で理解できる)を使用したくない場合は、SeedFuプラグインを使用できます。これは非常に効果的です。

于 2009-10-23T09:58:15.903 に答える
1

あなたの仕事はよさそうだ。タスクがサイレントに失敗する唯一の原因は、Fixture.newに渡すファイルがymlまたはcsvファイルを指していないことです。

インポートしたファイルのフルパスを出力するようにputステートメントを変更して再確認し、出力内容をディレクトリ構造と比較します。

たとえば、フィクスチャファイルが大文字で始まる場合、物事は静かに失敗しますか?カテゴリ.ymlの代わりにCategories.yml

于 2009-10-23T16:34:50.127 に答える
0

db:seedタスクはRails2.3.4で追加されました。したがって、エッジを実行する必要はありません。

http://weblog.rubyonrails.org/2009/9/4/ruby-on-rails-2-3-4

于 2009-10-23T17:29:08.193 に答える