Ассоциация HABTM: Недопустимые параметры

Как дела, ребята!

Я пытался реализовать ассоциацию has_and_belongs_to_many в своем приложении rails (4). Вот мой код:

Моя модель категории

class Admin::Category
    include Mongoid::Document
    ...
    has_and_belongs_to_many :estimates, class_name: "User::Estimate", :inverse_of => :categories
end

Моя модель оценки

class User::Estimate
    include Mongoid::Document
    ...
    has_and_belongs_to_many :categories, class_name: "Admin::Category", :inverse_of => :estimates
end

Надежные параметры

def user_estimate_params
    params.require(:user_estimate).permit({:category_ids => []}, :favorite_time, :city_id, :number_of_guests, :event_date, :stage_where_it_is, :event_type, :observation, user_attributes:[:name, :email, :receive_news, :password, :password_confirmation, :preferred_phone, :alternate_phone])
end

Мой запрос

Parameters: {"utf8"=>"✓", "authenticity_token"=>"JJk6m+5VV7tCLDeUCRkQatQOw/fFiw8LCV39casua+c=", "user_estimate"=>{"user_attributes"=>{"email"=>"[email protected]"}, "city_id"=>"523b638b5383de1887000001", "event_type"=>"Casamento", "number_of_guests"=>"456", "event_date"=>"21/11/2013", "stage_where_it_is"=>"Nos próximos 30 dias", "category_ids"=>["523b667687924d211527530e", "523b667b87924d2115275317"], "observation"=>""}, "event_type_select"=>"527ace4353455263c9000000", "commit.x"=>"149", "commit.y"=>"40"}
Unpermitted parameters: category_ids

Как видите, я получаю сообщение об ошибке Недопустимые параметры: category_ids, из-за чего я не могу сохранить свои категории, даже если категории уже добавлены в метод сильных параметров.

Я использую MongoDB/Монгоид.

Я нашел много похожих вопросов, но эти вопросы были решены добавлением => []

К методу сильных параметров, как я уже делал.

Любая помощь?

ваше здоровье


person Sergio Santiago    schedule 07.11.2013    source источник
comment
посмотрите на полученный хэш params[:user_estimate]. Я считаю, что {:category_ids =› []} должно быть просто :category_ids =› []   -  person Almaron    schedule 08.11.2013


Ответы (2)


У меня была та же проблема и предложение с полем :category_ids, тип: Array

не работал. Но

params.require(:model).permit(category_ids: [], ... )

сделал это.

person flexus    schedule 29.08.2014
comment
должен был сделать allow({category_ids: []}, (добавить подхэш), чтобы это сработало - person user1130176; 11.10.2016

Решено

Я бы сказал, что мне нужно было сделать обходной путь. Я создал поле вручную, которое должно было создаваться автоматически при использовании ассоциации HABTM. Создал поле в моей Модели оценки:

class User::Estimate
    include Mongoid::Document
    ...
    has_and_belongs_to_many :categories, class_name: "Admin::Category", :inverse_of => :estimates
    field :category_ids, type: Array
end

PS: Объявление поля должно быть объявлено ПОСЛЕ ассоциации HABTM.

Надеюсь, поможет!

Ваше здоровье!

person Sergio Santiago    schedule 08.11.2013