Я начал использовать 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"=>"[email protected]"},
"commit"=>"Update Space",
"id"=>"the-kosmonaut"} <--- culprit
Я предполагаю, что последняя строка является виновником, поскольку она является атрибутом readonly, она не в моей форме, а скорее в 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
UPDATE: Это не работает, так что это не 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
UPDATE UPDATE: удаление проблемы scope_to устраняет проблему.
scope_to :current_user, :unless => proc{ current_user.admin? }
Только проблема в том, что мне нужна scope_to, чтобы пользователи не могли видеть записи, которыми они не владеют. Мое предположение (как я предполагаю, что scope_to обычно работает с has_many), что моя ассоциация HABTM вызывает какую-то странность? Т.е. пользователи < - HABTM → Пробелы?