5

Dies passierte, als ich meinem Beziehungsmodell ein attr_accessible hinzugefügt habe.Verwenden Sie das neue empfohlene Schutzmodell für params (strong_parameters) oder fügen Sie '`protected_attributes`' zu Ihrer gemfile hinzu

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 
end 

Ohne zu entwickeln oder ein protected_attributes Juwel zu verwenden, was ist der Weg, um dieses? Ich weiß, dass Sie bei Controllern eine private Methode aufrufen, die Felder erfordert und erlaubt. Ist das etwas, was Sie auch im Modell tun sollten? Was ist die Konvention hier?

Danke!

Antwort

8

In Rails 4 verwenden Sie statt der geschützten Attribute starke Parameter. (Sie müssen den Edelstein nicht in Ihre gemfile aufnehmen, da er bereits enthalten ist.)

Sie nehmen den attr_accessible-Code von Rails 3 aus Ihrem Modell und fügen den entsprechenden Code in Ihren Controller ein. Sehen Sie hier für weitere Dokumentation: https://github.com/rails/strong_parameters

In Ihrem Fall so etwas wie:

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 

Edit:

Hier ist ein guter Artikel, den ich über darüber kam gerade: http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

+0

+1 für eine gute Verbindung – Aarmora

Verwandte Themen