2014-09-19 31 views
0

首先,我是充分了解的不良做法與混合兩者。混合attr_accessible和strong_parameters,如何跳過attr_accessible?

我有一個模型,有attr_accessible設置。我想開始將我們的應用程序轉換爲strong_parameters。問題是,我們需要在我們重構應用程序的各個部分時做這樣的零碎工作。是否有ActiveRecord方法可以用來更新繞過attr_accessible的屬性?或者我能否定義一種繞過它的東西類型?

代碼示例:

型號:

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) 

然後它會工作。