【发布时间】:2014-09-17 17:59:39
【问题描述】:
我正在尝试编写一个 ruby on rails 函数,该函数将为任何模型创建一个新对象。这是我到目前为止所拥有的
def create_populated_object(model)
test_object = model.new
model.columns.each do |column|
attr_name = column.name
attr_type = column.type
#test_object.assign_attributes(attr_name+':'+ "9")
puts "#{':'+attr_name} => #{attr_type}"
if attr_type.to_s == 'integer'
b = '{:' + attr_name.to_s + '=>' + 9.to_s + '}'
puts b
test_object.assign_attributes(b)
puts "it worked"
elsif attr_type.to_s == 'string'
puts "string"
elsif attr_type.to_s == 'datetime'
puts "date time"
elsif attr_type.to_s == 'boolean'
puts "boolean"
elsif attr_type.to_s == 'text'
puts "text"
else
puts "UNKNOWN ATTRIBUTE TYPE"
end
end
puts test_object
end
在我的示例中,id 是模型的第一个属性。我尝试将值 9 分配给它,但我不断收到此错误:
NoMethodError: "{:id=>9}":String 的未定义方法 `stringify_keys'
有人知道如何解决这个问题吗?
【问题讨论】:
-
始终给出问题的最小示例中涉及的所有内容。在这里,分配的代码和数据库状态以及解释“我尝试将值 9 分配给它”的任何其他内容。阅读帮助重新提出好问题。 (即使事实证明这个特定问题的解决方案已经足够了。)
标签: ruby-on-rails ruby generics model attributes