2014-09-19 2 views
0

Прежде всего, я полностью осведомлен плохой практики с смешиванием двух.Смешанные attr_accessible и strong_parameters, как пропустить attr_accessible?

У меня есть модель, которая установила attr_accessible. Я хотел бы начать переход нашего приложения на strong_parameters. Проблема в том, что мне нужно сделать это по частям, поскольку мы реорганизуем отдельные части приложения. Есть ли способ ActiveRecord, который я могу использовать для обновления атрибутов, минуя attr_accessible? Или я могу определить тип вещи attr_accessible=false, который обходит его? Пример

Код:

Модель:

class User < ActiveRecord::Base 
    attr_accessible :first_name, :last_name, :email, :password 
end 

Контроллер:

class UsersController < ApplicationController 
    before_action :set_user 

    def update 
    @user.assign_attributes(user_params) 
    @user.save! 
    end 

    private 

    def set_user 
    @user = User.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def user_params 
    params.require(:user).permit(
            :first_name, :last_name, :email, :other_attribute_not_in_accessible 
           ) 
    end 
end 

ответ

1

Нашел!

В контроллере, сделайте следующее:

@user.update_attributes(user_params,:without_protection=>true) 

И тогда он будет работать.

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