【发布时间】:2018-07-13 22:46:36
【问题描述】:
我是 Rails 的新手,但遇到了问题。像这样从 YML 文件加载数据的最佳方法是什么:
projects:
- title: 'family'
todos:
- text: 'Get some milk'
isCompleted: false
- text: 'Cook some bacon'
isCompleted: true
- text: 'Repair the front door'
isCompleted: false
- title: 'work'
todos:
- text: 'Call my boss'
isCompleted: true
- text: 'Finish my work tasks'
isCompleted: true
- text: 'Get fired'
isCompleted: false
- title: 'therest'
todos:
- text: 'Do something'
isCompleted: false
- text: 'Ask a question on stackoverflow'
isCompleted: false
所以,我有两个模型 - 待办事项模型(文本和 isCompleted 字段)和项目模型(只有标题字段)。项目 has_many 待办事项。 我试着这样做:
seed_file = Rails.root.join('db', 'seeds', 'seeds.yml')
config = YAML::load_file(seed_file)
Project.create!(config)
但我有一个错误:
ActiveModel::UnknownAttributeError: unknown attribute 'projects' for Project.
我该如何解决这个问题?
【问题讨论】:
-
我认为您的 YAML 中有复制粘贴错误,是吗?我认为那不是有效的语法。
-
你的意思是这个'-'符号吗?是的,他们在这里似乎完全错了。但现在我得到另一个错误 -
Psych::SyntaxError: (/Users/Aldres/Desktop/tasktracker/db/seeds/seeds.yml): did not find expected key while parsing a block mapping at line 2 column 3 /Users/Aldres/Desktop/tasktracker/db/seeds.rb:9:in'` -
我在想你的缩进似乎是错误的。我不知道为什么
projects像您在帖子中那样缩进。而且,如果projects下的每一个都是project,那么您似乎需要迭代config变量来创建您的Projects。 -
是的,类似的。虽然,您必须检查
config的结构才能获得正确的语法。它可能类似于config[:projects].each do |project|。如果您需要更多指导,可以将config添加到您的 OP。
标签: ruby-on-rails ruby