У меня есть приложение Rails4, использующее PG hstore.
Это из консоли:
Это контроллер автомобиля:
def vehicle_params
params.require(:vehicle).permit(:description, :stufftype_id, :name, :tenant_id, :count, :manufacturer, :man_date, :purchase_date, :purchase_price, :current_price, :warranty_date, :model, :notes, :site_id, :sell, :loaned, :borrowed, :sell_to, :borrowed_from, :sale_id, :sale_price, :sold_amount, :sold, :archive, :vendor_id, :loaned_to, :data)
end
Он содержит :data
Итак, почему данные являются недопустимым параметром?
Спасибо за помощь!
1 ответ
Когда вы разрешаете :data
в своих строгих параметрах, это разрешает только скалярное значение.
Скалярные значения могут быть типа String
, Symbol
, NilClass
, Numeric
, TrueClass
, FalseClass
, Date
, Time
, DateTime
, StringIO
, IO
, ActionDispatch::Http::UploadedFile
и Rack::Test::UploadedFile
, как описано в документации по строгим параметрам:
https://github.com/rails/strong_parameters#permitted-scalar-values
Это означает, что передача Hash
для :data
в хэше params не будет разрешена как есть.
Вы ищете способ разрешить вложенные параметры. Также описано в документации:
https://github.com/rails/strong_parameters#nested-parameters
И если ваши ключи hstore являются динамическими, вы можете сами занести динамический хэш в белый список, используя метод, описанный в следующем вопросе SO:
рельсы 4 сильных параметра + динамические ключи hstore
Надеюсь, это поможет.
Похожие вопросы
Связанные вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.
rails 4 strong params + dynamic hstore keys
.