Вообще говоря, attr_accessible - это не тот инструмент, который вы ищете, и в Rails нет ничего встроенного, что делает то, что вы хотите.
Если вы хотите детально контролировать, кто может обновлять определенные атрибуты в модели, вы можете сделать что-то вроде:
class Order < ActiveRecord::Base
def update_attributes_as_user(values, user)
values.each do |attribute, value|
# Update the attribute if the user is allowed to
@order.send("#{attribute}=", value) if user.can_modify?(attribute)
end
save
end
end
Затем вы можете изменить Order.update_attributes(params[:order])
на Order.update_attributes_as_user(params[:order], current_user)
и, если вы реализуете метод User#can_modify?
для возврата true в правильных случаях, он должен работать.