我有一个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中创建具有关联的对象
- 2. Rails 3 - 控制器以多对多的关系创建动作
- 3. Django-rest-framework创建具有多对多关系的对象
- 4. 创建一个具有多对多关系的对象
- 5. 创建关系类对象
- 6. 控制对象创建
- 7. 关联关系在控制台
- 8. 如何创建Rails的has_many_and_belongs_to_many关系的两个对象之间的关系
- 9. 如何创建另一个控制器动作来在rails中创建对象?
- 10. Rails的:创建具有HABTM关系的记录
- 11. 用于创建具有一对多关系的新对象的内联表单?
- 12. Rails:从多对多关系的“selected”对象构建对象
- 13. Rails教程:没有关系控制器
- 14. 创建RealmRecyclerView的境界关系对象
- 15. MyBatis:控制对象的创建与参照现有对象
- 16. 在grails中保存具有多对多关系的对象
- 17. 在NoMethodError创建具有的has_many关联结果的对象
- 18. Chrome的控制台对象
- 19. Rails控制台 - Hpricot,Nokogiri在Rails控制台中不可用?
- 20. 在rails中,我可以创建一个具有多个关系的产品吗?
- 21. 在yii2控制台中创建url
- 22. 在python中创建控制台
- 23. Ruby on Rails中的对象和关系
- 24. 有关创建DAL对象的建议
- 25. Laravel - 使用belongsTo关系创建对象
- 26. Ruby on rails:创建具有多个关联的对象时遇到问题
- 27. Gnat创建过程没有控制台
- 28. Automapper创建具有多对多关系的新行
- 29. 创建单列从MYSQL连接具有1对多的关系
- 30. 创建具有多对多关系的NSFetchedResultsController管理实体
这真的取决于你的.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