在Rails控制台中创建具有关系的对象

时间:2013-04-29 18:00:35

标签: ruby-on-rails ruby

我有一个Rails项目要做。我正在使用roo解析.xls文件并将信息放在关系数据库中。如果ruby不使用外键,我该怎样才能恢复这种关系?假设我得到了Category和Subcategory表,我正在读取.xls文件中的行并将信息写入数据库。类别有许多子类别。但是可能存在现有类别(因此我不需要再添加它)。使用rails console我该怎么办?我正在使用像a = Category.new(name_category: "test")这样的东西。这应该创建一个类别,但它没有链接到子类别。如何在一个命令中添加和链接它们?如果子类别具有项目,该怎么办?我如何创建涉及3种关系的东西?

1 个答案:

答案 0 :(得分:0)

不要在一个命令中执行此操作。您需要先“查找或创建”类别。

category = Category.find_or_create_by_name(name: "test")
Subcategory.create(name: "foo", category: category)

您的模型应如下所示:

class Category < ActiveRecord::Base
  has_many :subcategories
end

class Subcategory < ActiveRecord::Base
  belongs_to :category
end