如何在导入CSV时覆盖模型中的created_at字段?

pat*_*ick 3 ruby-on-rails-3

我正在使用以前创建的日期将完整的等待列表注册CSV导入到我的数据库中,如何在保留其初始日期的同时导入它们而不是让它们都显示相同的导入日期?

我收到错误: Rails can't mass-assign protected attributes for id, created_at

代码:

 csv_file = params[:csv][:file].read
    csv = CSV.parse(csv_file, :headers => false) 
    csv.each do |row|
       Model.create!(:email => row[0], :created_at => row[1])    
    end    
Run Code Online (Sandbox Code Playgroud)

Pet*_*erg 11

在Rails 4中:

attr_accessible不再使用,包括它在模型的顶部可能会破坏您的代码.仅仅包括:created_at在通过的args create!应该做到这一点.

将@ Ghoti的评论转变为答案,以提高其可见度


rog*_*iog 5

您需要将所需的列添加到 attr_accessible

class Tutorial < ActiveRecord::Base
  attr_accessible :created_at
end
Run Code Online (Sandbox Code Playgroud)

  • 由于Rails 4改变为通过控制器而不是模型来控制访问,因此这个答案已经过时了.我们不再使用attr_accesible和(!)它应该"正常工作" (8认同)