NoMethodError: неопределенный метод `разрешение' для #‹Hash:0x007facebc78c98› в минитесте Rails

я получаю эту ошибку permit для сильных параметров в Rails Minitest. Это отлично работает, когда я запускаю обычный поток (кроме тестирования). Всякий раз, когда я запускаю свой тест, он дает мне эту странную ошибку.

Почему это не работает только во время тестирования

parameter

@params_return_type = {:client_notes_and_action_items=>[{"notes_action_type"=>"return_help", "title"=>"test title", "description"=>"", "to_do_action_items_attributes"=>{"0"=>{"linked_item_id"=>"987", "linked_item_type"=>"client_purchases_shipping_detail", "initial_request"=>"true"}}, "estimated_completion"=>'Mon, 30 Mar 2020', "assigned_to"=>"45", "assigned_by"=>"41"}],"client_id"=>"76576"}

Ошибка при запуске теста

NoMethodError: undefined method `permit' for #<Hash:0x007facebc78c98>

Вы имеете в виду? Распечатать

this is my strong parameter

частный

def  self.client_notes_and_action_item_params(params)
   params.permit( :client_id, :notes_action_type, :category, :description, :user_id, :image, 
   :comments, :status, :estimated_completion, :actual_completion, :title, 
   to_do_action_items_attributes: [:id, :linked_item_id, :linked_item_type, :deleted, 
   :initial_request])
end

мой код API такой

params[:client_notes_and_action_items].each do |client_notes_and_action_item|
 ClientNotesAndActionItem.transaction do
 action_item = ClientNotesAndActionItem.new(client_notes_and_action_item_params(client_notes_and_action_item))

и код прерывается здесь на последней строке кода

Любая идея, в чем проблема. Если сильный параметр был проблемой, тогда я должен получить эту ошибку для всех, нормальный поток работает нормально, только тест Minitest ломается.


person Diksha Verma    schedule 16.03.2020    source источник


Ответы (1)


Вам нужно преобразовать объект Hash в объект ActionController::Parameters, поскольку permit является методом ActionController::Parameters

params = {:client_notes_and_action_items=>[{"notes_action_type"=>"return_help", "title"=>"test title", "description"=>"", "to_do_action_items_attributes"=>{"0"=>{"linked_item_id"=>"987", "linked_item_type"=>"client_purchases_shipping_detail", "initial_request"=>"true"}}, "estimated_completion"=>'Mon, 30 Mar 2020', "assigned_to"=>"45", "assigned_by"=>"41"}],"client_id"=>"76576"}
@params_return_type = ActionController::Parameters.new(params)

Попробуйте.

person Rajdeep Singh    schedule 16.03.2020