0
我有这段代码。第一个和第二个命令钢轨工作良好,但“项目.todos < todo”部分ruby解释器视为错误。Rails seed.db语法
NoMethodError: undefined method `todos' for nil:NilClass
我该如何解决?当我把seeds.rb文本这样的,一切都很好,但它的代码无法正常工作:
#work
project = Project.create title: "Family"
todo = Todo.create text: "Buy milk", isCompleted: true
project.todos << todo
#code
require 'yaml'
yhash = YAML.load_file(File.open("#{Rails.root}/db/seeds.yml"))
yhash.each do |key, value|
value.each do |k, v|
k.each do |ke, proj|
if proj.class.name == 'String'
project = Project.create title: proj
elsif proj.class.name == 'Array'
proj.each do |todo|
i = 0
tmp = ''
todo.each do |to|
to.each do |t|
if i == 0
i = 1
elsif i == 2
i = 3
elsif i == 1
tmp = t
i = 2
elsif i == 3
if t == false
bool = 'false'
else
bool = 'true'
end
todo = Todo.create text: tmp, isCompleted: bool
project.todos << todo
i = 0
tmp = ''
end
end
end
end
end
end
end
end
'凸出' 是红宝石阵列。 'project' - 类的rails实例。他已经创建在块'如果proj.class.name =='String'' –
但我有几个不同的项目。 例如: '项目 - 标题: '家庭' 待办事项: - 文字: '买牛奶' isCompleted:假 - 文字: '去剧场' - isCompleted:假 - 标题:“工作' todos: - text:'Create code' - isCompleted:false ...' –
这不是纯粹的红宝石。这是对rails db:seed的命令,但是纯ruby阻止这个命令,因为是ruby class的东西。 –