Для моего приложения rails 3.2.3 я использую attr_encryptor, который является ответвлением attr_encrypted от danpal. Я следовал инструкциям, приведенным здесь, но при попытке создайте новую запись Patient
:
ActiveModel::MassAssignmentSecurity::Error in PatientsController#create
Can't mass-assign protected attributes: mrn, last_name, first_name, date_of_birth(1i), date_of_birth(2i), date_of_birth(3i)
Как говорится в инструкциях, я добавил столбцы encrypted_#{field}
, encrypted_#{field}_salt
и encrypted_#{field}_iv
в свою таблицу Patients
, удалив их незашифрованные аналоги.
Модель Patient
выглядит так:
class Patient < ActiveRecord::Base
attr_accessible :age, :gender
attr_encrypted :last_name, :key => 'key 1'
attr_encrypted :first_name, :key => 'key 2'
attr_encrypted :mrn, :key => 'key 3'
attr_encrypted :date_of_birth, :key => 'key 4'
# ...
end
Мой метод create
в моем контроллере Patient
выглядит так:
PatientsController < ApplicationController
# ...
def create
@patient = Patient.new
@patient.first_name = params[:patient][:first_name]
@patient.last_name = params[:patient][:last_name]
@patient.mrn = params[:patient][:mrn]
@patient.date_of_birth = Date.new(params[:patient]['date_of_birth(1i)'],
params[:patient]['date_of_birth(2i)'],
params[:patient]['date_of_birth(3i)'])
if @patient.save
# do stuff
else
# do other stuff
end
end
# ...
end
Что я делаю неправильно? Заранее спасибо за помощь!