1

データベースにデータをシードしようとしていますが、Railsの関係についていくつか質問があります。

http://guides.rubyonrails.org/association_basics.htmlに基づいて理解を深めようとしています

a。has_manyとbelongs_toの関係があります。既存のモデルで実行できますか?

たとえば、2つのモデルの科目とレッスンが両方ともすでに作成されているとします。関係をモデル化するために、subject_idをレッスンに追加するだけですか?または、そのような関係のために含める必要のある追加のデータはありますか。

私は周りを見回し、次の例で、既存のモデルと一緒にネストされたモデルを作成しました。たとえば、contact_attributes内にネストされたモデルをシードしました。 モデルとそのすべてのネストされたモデルをdb:seedする方法は?

しかし、子モデルがすでに作成されている場合、それを回避する方法がよくわかりません。データをシードしているときに、親モデルのIDを追加することでそのような関係を示すのに十分です。

b。has_and_belongs_to_many

has_many_and_belongs_toの関係で、レールガイドから追加のテーブルがあります。たとえば。科目とレッスン。追加のテーブルsubjects_lessonsを生成する必要があります。同様に、そのような関係を作成する場合、そのテーブルにデータをシードするだけで十分ですか、それとも追加の手順がありますか?

誰かが私の疑問に答えるのを手伝ってくれたら幸いです。

4

2 に答える 2

2

あなたの最初の考えは正しいです。次のような関係があれば、を割り当てるsubject_idだけで十分です。

関係:

class Subject < ActiveRecord::Base
  has_many :lessons
end
class Lesson < ActiveRecord::Base
  belongs_to :subject
end

seed_data.rbの例:

class SeedData
  def self.run!
    @subject = Subject.create()
    @lesson = @subject.lessons.create
    # @lesson.subject == @subject
    # @subject.lessons == [@lesson]
  end
end

レーキファイル:

require "seed_data"

desc "Seed database"
task :seed_data do
  SeedData.run!
end

CLI:

rake seed_data
于 2013-01-04T06:21:15.060 に答える
0

最初にシードファイルで親アイテムを作成してから、親アイテムのIDを子アイテムに割り当てます...子アイテムを作成する前に、親アイテムが最初に存在している必要があります。シードデータは機能し、必要に応じて十分なはずです。

于 2013-01-04T06:25:56.147 に答える