1

我正在尝试将一些数据播种到我的数据库中,并且我有几个关于 Rails 关系的问题。

我正在尝试根据http://guides.rubyonrails.org/association_basics.html提高我的理解

一个。具有has_many 和belongs_to 关系。可以用现有模型完成吗?

例如,我已经创建了 2 个模型主题和课程。要对关系建模,我是否只需将 subject_id 添加到课程中?或者,对于这种关系,我是否需要包含任何其他数据。

我环顾四周,并通过以下示例,他们与现有模型一起创建了嵌套模型。例如,他们在 contact_attributes 中植入了嵌套模型。 如何分贝:种子模型及其所有嵌套模型?

但是如果子模型之前已经创建过,我不太确定如何解决它,并且在我播种数据时添加父模型的 id 是否足以显示这种关系。

湾。has_and_belongs_to_many

使用 has_many_and_belongs_to 关系,来自 rails 指南,还有一个附加表。例如。科目和课程。我将不得不生成一个额外的表subjects_lessons。同样,如果我要创建这样的关系,是否将数据播种到该表中就足够了,还是有额外的步骤?

如果有人可以帮助我回答我的疑问,将不胜感激。

4

2 回答 2

2

你最初的想法是正确的。给定如下关系,分配subject_id就足够了:

关系:

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

种子数据.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

命令行:

rake seed_data
于 2013-01-04T06:21:15.060 回答
0

只需首先在种子文件中创建您的父项,然后将父项的 id 分配给子项...在创建子项之前,父项只需要先存在即可。播种数据将起作用,并且根据您的需要应该足够了。

于 2013-01-04T06:25:56.147 回答