5

Stało się tak, gdy dodałem attr_accessible do mojego modelu Relationship.Proszę użyć nowego zalecanego modelu ochrony dla parametrów (strong_parameters) lub dodaj `protected_attributes` do twojego gemfile

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 
end 

Bez używania Devise lub chronionego gem gem, jaki jest sposób obejścia tego? Wiem, że w kontrolerach nazywasz prywatną metodę wymagającą i zezwalającą na pola. Czy jest to również coś, co powinieneś zrobić w tym modelu? Jaka jest tutaj konwencja?

Dzięki!

Odpowiedz

8

W Railsach 4 używasz Silnych parametrów zamiast Chronionych atrybutów. (Nie musisz dołączać klejnotu do pliku gem, ponieważ jest już dołączony).

Usuwasz kod RAL 3 z modelu i umieszczasz odpowiedni kod w swoim kontrolerze. Zobacz tutaj, aby uzyskać więcej dokumentacji: https://github.com/rails/strong_parameters

w Twoim przypadku, coś jak:

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:

Oto dobry artykuł Właśnie natknąłem się na ten temat: http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

+0

+1 świetny link – Aarmora