5

Ciò è accaduto quando ho aggiunto un attr_accessible al mio modello di relazione.Utilizzare il nuovo modello di protezione consigliato per params (parametri_forte) o aggiungere `protected_attributes` al file gemma

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 
end 

Senza usare Devise o una gemma protected_attributes, qual è il modo di aggirare questo? So che nei controller si chiama un metodo privato che richiede e consente i campi. È questo qualcosa che dovresti fare anche nella modella? Qual è la convenzione qui?

Grazie!

risposta

8

In Rails 4 si utilizzano i parametri forti anziché gli attributi protetti. (Non è necessario includere la gemma nel tuo gemfile poiché è già inclusa.)

Prendi il codice attr_accessible di Rails 3 dal tuo modello e inserisci il codice corrispondente nel controller. Vedi qui per maggiori documentazione: https://github.com/rails/strong_parameters

Nel tuo caso, qualcosa di simile:

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:

Ecco un buon articolo che ho appena incontrato su questo: http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

+0

+1 per ottimo collegamento – Aarmora

Problemi correlati