2013-08-06 5 views

Odpowiedz

4

Jeśli przez "wyłączyć" rozumiesz powrót do linii Rails 3-style attr_accessible, to tak.

Po prostu użyj klejnotu protected_attributes.

39

Wyłączenie ochrony atrybutów jest prawie zawsze złym pomysłem.

Z tego obowiązkowego notatki z drogi, oto jak go wyłączyć:

config.action_controller.permit_all_parameters = true 

Place to w config/application.rb

+0

Po prostu wypróbowałem to i nie zadziałało dla ja (w aplikacji Rails 4.0.0). – Batkins

+2

Pracowałem dla mnie. Zgoda - to na ogół zły pomysł - ale moim przypadkiem użycia jest strona administracyjna, w której administratorzy mogą coś zmienić. – Zubin

+1

To zadziałało dla mnie. Pamiętaj, aby umieścić linię wewnątrz klasy Application i zrestartować serwer HTTP. – Guildenstern70

-2

Oczywiście można! Według oficjalnych Dokumentów Silne parametry'S (https://github.com/rails/strong_parameters), można wyłączyć dodając poniżej kody do config/environment.rb:

config.active_record.whitelist_attributes = false 

To działa na mnie w szynach 3,2

+1

służy do wyłączenia protected_attributes – brauliobo

6

wpadłem na ten problem, gdzie próbował zapisać wszystkie parametry z webhooka od Stripe.

Jeśli chcesz zezwolić na wszystkie parametry dla pojedynczej instancji, możesz wywołać #to_hash na obiekcie params przed przekazaniem go do metody initialize.

Ex:

@my_object = MyObject.new(params[:my_object].to_hash) 
0

zatrzymać zakazanego atrybuty są sprawdzane pod kątem aplikacji można łata się czek ..

na przykład umieścić następujący kod w

config/inicjalizatory/disable_strong_parameters.rb

module ActiveModel 
    module ForbiddenAttributesProtection 
    protected 
     def sanitize_for_mass_assignment(attributes) 
      attributes 
     end 
     alias :sanitize_forbidden_attributes :sanitize_for_mass_assignment 
    end 
end