我有一个Rails项目要做。我使用roo解析一个.xls文件,并将这些信息放入关系数据库中。如果ruby不使用外键,我怎么才能恢复这种关系?假设我有类别和子类别表,我正在读取.xls文件中的行并将信息写入数据库。一个类别有许多子类别。但可能有一个现有的类别(所以我不需要再添加它)。使用rails控制台,我会怎么做?我正在使用类似a = Category.new(name_category: "test")
的东西。这应该创建一个类别,但它不链接到一个子类别。我如何在一个命令中添加和链接它们?如果一个子类别有一个项目会怎样。我将如何创建涉及3个关系的东西?在Rails控制台中创建具有关系的对象
回答
不要在一个命令中完成。您需要首先“查找或创建”类别。
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
谢谢。我想我现在可以做到! – andrefurquin 2013-04-29 21:44:04
我收到此错误:ActiveModel :: MassAssignmentSecurity ::错误:无法批量分配受保护的属性:类别。 – andrefurquin 2013-04-29 23:19:48
嗯,你也需要在你的子类别模型中的这一行: 'attr_accessible:子类' – ndbroadbent 2013-04-30 00:33:02
- 1. Rails控制台忽略ActiveRecord中的换行符:关系对象?
- 2. 在MVC中创建具有多对多关系的对象4
- 3. 如何为与JPA具有一对多关系的对象创建控制器?
- 4. 在Rails中创建具有关联的对象
- 5. 创建具有一对多的关系
- 6. Rails 3 - 控制器以多对多的关系创建动作
- 7. 创建一个具有多对多关系的对象
- 8. Django-rest-framework创建具有多对多关系的对象
- 9. 在Rails中创建多对多关系
- 10. Rails轨道控制台中的一对多关系错误
- 11. Rails中的一对多关系可以创建父对象吗?
- 12. 在Rails 3中为has_many:through关系创建控制器和视图
- 13. 如何创建具有EntityState未知关系的对象
- 14. 创建关系类对象
- 15. 在控制台中创建一个HABTM对象
- 16. Rails对象关系
- 17. RubyMine Rails控制台创建错误
- 18. 如何在BootStrap.groovy中创建具有多个关系的对象初始化
- 19. 控制对象创建
- 20. 限制用户在has_one关系中创建一个对象
- 21. 关联关系在控制台
- 22. 使用Rails创建在Salesforce与Restforce关系对象
- 23. 如何创建Rails的has_many_and_belongs_to_many关系的两个对象之间的关系
- 24. 控制器中的Rails助手和创建模型对象
- 25. Rails的:创建一个方法在控制对象[解决]
- 26. 如何创建另一个控制器动作来在rails中创建对象?
- 27. Rails的:创建具有HABTM关系的记录
- 28. 用于创建具有一对多关系的新对象的内联表单?
- 29. 如何通过导轨控制台创建Neo4j关系?
- 30. Rails:从多对多关系的“selected”对象构建对象
这真的取决于你的.xls文件。他们是否包含subcategory_id或类似的东西将对象链接到另一个? – MrYoshiji 2013-04-29 18:05:54
是的,他们这样做。 @MrYoshiji – andrefurquin 2013-04-29 18:32:29
我想要一个可以这样工作的命令。即使是这样也行不通。 Category.create(name:“test”)。subcategory.create(name:“foo”)。我知道这是行不通的。在代码中创建关系,这样rails就知道它们已经连接起来了..我不确定.. – andrefurquin 2013-04-29 18:35:15