Я использую Ruby on Rails 3, и я хотел бы обновить ActiveRecord, избегая настройки attr_accessible
, но возвращая логическое значение из метода обновления. Я знаю , что, чтобы избежать настройки attr_accessible
, я могу использовать это
@user.send :attributes=, @attrib, false
, но это не возвращает логическое значение .
Мне это нужно, потому что я должен обрабатывать поведение обновления (когда метод обновления возвращает true
) или ошибки (когда метод обновления возвращает false
) в некотором роде так:
В модели:
class User < ActiveRecord::Base
attr_accessible #none
# or
# attr_protected :name, :surname
end
В контроллере:
class UsersController < ApplicationController
# The following is the behaviour that I would like to handle (it is just an example: it is wrong and doesn't work)
if @user.send(:attributes=, { :name => params[:name], :surname => params[:surname] }, false)
...
else
...
end
end
Возможно ли это?Если так, то как?Если нет, есть другой способ сделать это?
PS: Чтобы избежать инъекций AJAX, для меня важно обновить только ограниченное количество атрибутов и не обновлять@user
ActiveRecord (см. Код в приведенном выше примере) вообще (может быть, я не должен использовать какой-либо метод, например "global" save
).