Я пытаюсь ограничить доступ к определенному атрибуту при обновлении.Rails Controller Params - пользовательский метод обновления для CanCan работает
Администратор имеет право обновить все из Need
в любое время они хотят, кроме они могут только обновить Need
«s is_public
BOOL только если need_state
является in_progress
.
CanCan не позволяет ограничивать действие обновления на основе определенных атрибутов, которые устанавливаются ... поэтому я думал, что только для этого можно сделать специальный метод, называемый set_is_public
.
Я получил свою форму призвание к нему, и он посылает следующую Params:
{"utf8"=>"✓",
"authenticity_token"=>"2u9AZ7AJDYQrXm3LubMAxlxhjbsQ14myUTyOSyvoKzk=",
"need"=>{"id"=>"5",
"is_public"=>"true"},
"commit"=>"Set as Public"}
Как вы идти об обновлении этой потребности в действии в контроллере?
Я не могу понять, как читать эти Params в и:
- Найти необходимость на основе идентификатора;
- Обновите свой атрибут
is_public
на значение параметраis_public
.
Большое спасибо за ответ! Я знаю, что это звучит так просто, но это вызвало у меня несколько часов задержки ... Он показывает: «Не удалось найти Need without ID», хотя я могу видеть в списке параметров, в котором он проходит: {«utf8» => "✓", "authenticity_token" => "2u9AZ7AJDYQrXm3LubMAxlxhjbsQ14myUTyOSyvoKzk =", "потребность" => { "ID" => "5", "is_public" => "истина"}, "фиксации" => «Установить как общедоступный»} –
включить отладчик gugg отладчика «gem debugger» в файле gem и вызвать метод «отладчик», который очень поможет вам, когда вы не сможете понять, что происходит в фоновом режиме. –
Попробуйте: 'params.require (: need) .permit (: id,: is_public)' –