私のモデルの一つは、私は自動移入されるべきいくつかのインスタンスを持っています。私はこれをどのように扱うのですか?

StackOverflow https://stackoverflow.com/questions/489316

質問

私が理解するために、このための具体的でなければなりません。私のアプリケーションでは、私は、ウィジェットのカラーテーマの情報が含まれているモデルと呼ばれるテーマを持っています。我々はいくつかのテーマを提供していますが、主に独自のテーマを作成するために、ユーザーに依存しています。そこで質問です:私は私のテーマを保存しますどこ?私は、テーマデータベースに格納した場合は、いつでも私は、データベースを切り替えたり、テスト中にそれをフラッシュし、私はテーマを再入力する必要があります。これは大きな問題ではない、それだけでずさんなようです。

今私は、コントローラ内のハッシュに保存されているテーマを持っています。各ウィジェットは、テーマを持って、各ウィジェットはtheme_idを持ち、それらがデータベースに格納されていないので、私たちの提供するテーマにはtheme_idがないのでそれに問題がある。

私は、この問題に対する解決策は非常に単純であることを知っているが、私は私の解決策がベストコーディング手法を採用して確認します。誰もがこのために何か提案がありますか?たぶん移行や他のrakeタスク中にデータベースにエントリを追加する方法があります...

ありがとうございます!

トニー

役に立ちましたか?

解決

の移行で読み込ん種データは、最も理にかなっていると私は頻繁に行っているものです。あなたのテーブルは、単に何もそれらなしで、あなたのアプリケーションに必要な仕事をする場合は、それらの最初の数レコードを作成すること、すなわち、本当にあなたのテーブルの適切な初期化の一部でない場合、それらは、移行に属しています。レーキタスクは(デモ用など)コマンドでアプリケーションにロードするために必要なデータセットを取得するための素晴らしいですが、特定のレコードが一貫必要とされることが予定されている場合、移行がスポットです。

他のヒント

テーマデータはデータベースに属します。

は、テストのために、固定具又はsetup法を用いてテーマデータを初期化します。開発と生産のために、あなたは最初のテーマデータでデータベースをシードする方法を作成する必要があります。カスタムrakeタスクは、このために良いです。実際のテーマデータは本当に、あなたが望む任意のフォーマットで保存することができます。例えばSQLスクリプトまたは YML器具

私はデシベル/ seeddata内のSQLファイルに保持されているデータ(プロジェクトの/ libディレクトリの下に.rakeファイルでこれを置く)でデータベースをシードするために、次のrakeタスクを使用します:

namespace :db do
  desc "Load seed fixtures (from db/seeddata) into the current environment's database." 
  task :seed => :environment do
    require 'yaml'
    config = YAML::load(open("#{RAILS_ROOT}/config/database.yml"))["#{RAILS_ENV}"]
    Dir.glob(RAILS_ROOT + '/db/seeddata/*.sql').each do |file|
      cmd = "mysql -u #{config['username']} -p#{config['password']} -h #{config['host']} #{config['database']} < #{file}"
      `#{cmd}`
    end
  end
end

データをシードするあなたのアイデアが進むべき道のように思えます。私はあなたが提案した方法を好きですが、あなたはここで提案する方法をどう思いますか: http://railspikes.com/2008/2/1/loading-seed-データ

それはあなたがActiveRecordのは、それがデータを検証できるようにデータを播種処理させることを示唆しています。

あなたが優れていると思いますどちら?

おかげで再び!

トニー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top