Я недавно начал использовать ActiveAdmin в проекте, и почти все работает отлично, но у меня возникла проблема при его использовании в сочетании с гемом friendly_id. Я получаю ActiveRecord :: ReadOnlyRecord, выброшенный для моих форм [я полагаю] из-за атрибута friendly_id, идентификатор которого доступен только для чтения:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut",
"address"=>"8 Sichovykh Striltsiv 24",
"email"=>"info@somedomain.com"},
"commit"=>"Update Space",
"id"=>"the-kosmonaut"} <--- culprit
Я предполагаю, что последняя строка является виновником, поскольку это атрибут только для чтения, это не в моей форме а скорее в PATH
http: // localhost: 5000 / manage / space / the-kosmonaut / edit
Как я могу исправить это, пытаясь обновить идентификатор?
Форма из ActiveAdmin выглядит так :
form do |f|
f.inputs "Details" do
f.input :name
f.input :address
f.input :email
f.input :phone
f.input :website
end
f.inputs "Content" do
f.input :description
f.input :blurb
end
f.buttons
end
ОБНОВЛЕНИЕ: Это тоже не работает, значит, это не friendly_id?
Я пробовал использовать предложение @watson, которое должно было сработать, но все равно получило ту же ошибку; - (
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut 23"},
"commit"=>"Update Space",
"id"=>"6933"}
http: // localhost: 5000 / manage / space / 6933 / edit
Когда я проверяю запись в консоли с помощью record.readonly?, возвращается false
UPDATE UPDATE: удаление scope_to устраняет проблему.
scope_to :current_user, :unless => proc{ current_user.admin? }
Единственная проблема в том, что мне нужен scope_to чтобы пользователи не видели записи, которыми они не владеют. Я предполагаю (поскольку я предполагаю, что scope_to обычно работает с has_many), моя ассоциация HABTM вызывает некоторые странности? Т.е. Пользователи Пробелы?