Я недавно начал использовать 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/spaces/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/spaces/6933/edit
Когда я проверяю запись в консоли с помощью record.readonly? возвращает false
ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ: удаление scope_to устраняет проблему.
scope_to :current_user, :unless => proc{ current_user.admin? }
Единственная проблема в том, что мне нужно scope_to, чтобы пользователи не могли видеть записи, которыми они не владеют Я предполагаю (как я предполагаю, что scope_to обычно работает с has_many), что моя ассоциация HABTM вызывает некоторую странность? Т.е. пользователи <- HABTM -> пробелы?