2013-08-27 4 views
1

Я попытался импортировать CSV-файл в мою базу данных. Мне нужно приложение для использовать точный атрибут created_at из файла CSV, но это не сработает. Я вижу только Time.now.created_at атрибут не обновляется при импорте CSV

Что я делаю неправильно?

код CSV импорт в модели:

def self.import(file, current_user) 
    allowed_attributes = [ "id","created_at","updated_at"] 
    @current_user = current_user 
    CSV.foreach(file.path, headers: true) do |row| 
     energy = find_by_id(row["id"]) || new 
     h1 = { "user_id" => @current_user.id } 
     h2 = row.to_hash.slice(*accessible_attributes) 
     h3 = h1.merge(h2) 
     energy.attributes = h3 
     energy.save! 
    end 
    end 
+1

Вам нужно будет явно установить created_at. access_attributes does not not created_at. – techvineet

+0

set created_at 'h3 [: created_at] = row [" created_at "] # THE_TIME_FROM_CSV' –

+0

Пожалуйста, не голосуйте. Я просто хотел понять это. Я бы опубликовал скриншот таблицы .csv; однако я не могу этого сделать из-за отсутствия репутации! –

ответ

0

Из documentation:

attr_accessible(*args) public 

Задает белый список атрибутов модели, которые могут быть установлены с помощью массового назначения.

Массовое присвоение будет устанавливать только атрибуты в этом списке, чтобы назначить остальные атрибуты, которые вы можете использовать с помощью прямых методов записи.

Вам необходимо добавить к attr_accessible все атрибуты, которые вы хотите обновить, включая created_at.

+0

yaeh, теперь все работает. Thanx –

Смежные вопросы