5

當我向我的關係模型添加attr_accessible時發生這種情況。請使用新推薦的參數保護模式(strong_parameters)或將`protected_attributes`添加到您的gem文件中

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 
end 

如果沒有使用Devise或者protected_attributes gem,那麼這是怎麼回事呢?我知道,在控制器中,你可以調用一個私有方法來請求和允許字段。這也是你應該在模型中做的事嗎?這裏的會議是什麼?

謝謝!

回答

8

在Rails 4中,您使用Strong Parameters而不是Protected Attributes。 (你不需要在你的gem文件中包含gem,因爲它已經包含了)。

你從你的模型中取出Rails 3 attr_accessible的代碼,並把相應的代碼放到你的控制器中。在這裏看到更多的文檔:https://github.com/rails/strong_parameters

在你的情況,是這樣的:

class RelationshipController < ActionController::Base 
    def create 
    @relationship = Relationship.new(relationship_params) 

    if @relationship.save 
     # do something 
    else 
     # do something 
    end 
    end 

    private 
    def relationship_params 
     params.require(:relationship).permit(:followed_id) 
    end 
end 

編輯:

這裏有一個很好的文章我只是碰到這個傳來:http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

+0

+1爲了很好的聯繫 – Aarmora

相關問題