chciałbym użyć czegoś takiego:Jak zezwolić na wszystkie atrybuty oprócz user_id przy użyciu strong_parameters?
def answer_params
params.require(:answer).permit!.without(:user_id)
end
chciałbym użyć czegoś takiego:Jak zezwolić na wszystkie atrybuty oprócz user_id przy użyciu strong_parameters?
def answer_params
params.require(:answer).permit!.without(:user_id)
end
to będzie działać?
params.require(:answer).permit!.except(:user_id)
Po prostu chcę to tutaj umieścić, biała lista nie jest sucha. Wyobraź sobie interfejs API JSON dla wpisu opartego na dokumencie, który może mieć do 100 (lub więcej) atrybutów (pary wartości klucza). Ogólnie rzecz biorąc, jedyne elementy, których potrzebujesz, to atrybuty, które mogą eskalować uprawnienia takie jak user_id.
Wystarczy wyizolować białą listę z kontrolera i ponownie użyć go w wielu klasach. To naprawi problem. – IvRRimUm
Mimo że rozwiązanie jest prawidłowe, należy pamiętać (w odniesieniu do pierwotnego pytania), że jest to niebezpieczne rozwiązanie. Powinieneś stosować podejście białej listy, gdy masz do czynienia z dozwolonymi atrybutami, a nie z czarną listą. –
@SimoneCarletti Istnieje wiele okoliczności, w których podejście oparte na białej liście jest naprawdę przesadne, a umieszczanie na czarnej liście nie jest w żaden sposób niebezpieczne. Nie każdy model stanowi poważne zagrożenie bezpieczeństwa. Zagrożenie należy oceniać indywidualnie dla każdego przypadku. –