在rails中字符串化错误

时间:2017-08-07 15:58:46

标签: ruby-on-rails ruby-on-rails-4

我有这个哈希数组:

object = [
  {:user_id=>9, :timesheet_project_id=>4, :timesheet_task_id=>87, :date=>"2017-08-23", :time_spent=>2.0, :comment=>"Test 23"}, 
  {:user_id=>9, :timesheet_project_id=>4, :timesheet_task_id=>87, :date=>"2017-08-23", :time_spent=>2.0, :comment=>"Test 23"}
]

我正在尝试创建SheetEntry的新对象,并通过执行以下操作将其保存在模型中:

 def self.save_entry(object)
   entry=SheetEntry.new(object)
   entry.save!
 end

但是得到了这个错误:

  

NoMethodError(数组的未定义方法`stringify_keys')

1 个答案:

答案 0 :(得分:2)

您需要迭代数组,以便可以使用它包含的每个哈希创建一个对象,例如:

def self.save_entry(object)
  object.each do |item| 
    SheetEntry.create!(item)
  end
end

请注意,使用create!等同于创建新对象然后保存它(即new然后save!)。

正如Mr.Yoshiji所指出的,最好将方法名称更改为save_entries,这表示它将处理多个对象。