у меня есть отношения 1-N в Mongoid/Rails:Mongoid встроенных документов и Rails сильных параметров не работает
class Company
include Mongoid::Document
field :name, type: String
embeds_many :people, class_name: 'Person'
end
class Person
include Mongoid::Document
field :first_name, type: String
embedded_in :company, class_name: 'Company', inverse_of: 'people'
end
Теперь я могу успешно создать компанию следующим образом в консоли; например:
> c = Company.new(name: 'GLG', :people => [{first_name: 'Jake'}]) # OK!
> c.people # OK!
Тогда у меня есть контроллер API JSON, чтобы обновить компанию, вдоль линий:
# PUT /api/companies/:id
def update
if Company.update(company_params)
# ... render JSON
else
# ... render error
end
end
private
def company_params
params.require(:company).permit(:name, :people => [:first_name])
end
Теперь, когда запрос PUT поступает из внешнего интерфейса, то company_params всегда отсутствует атрибут: people. Rails log говорит:
Parameters: {"id"=>"5436fbc64a616b5240050000", "name"=>"GLG", "people"=>[{"first_name"=>"Jake"}], "company"=>{"name"=>"GLG"}}
Я не получаю предупреждение «Непереведенные параметры». Я пробовал каждый возможный способ разрешить людям поле, и он по-прежнему не включается.
params.require(:company).permit!
Результаты в том же самом. Что я делаю не так?
Нет эффекта. У параметров уже есть эта проблема, когда они нажимают на метод обновления. – Jake