1

Я являюсь разработчиком .NET и в настоящее время работаю над ROR. Как началось сталкиваться с небольшими трудностями. Я надеюсь, что вы можете мне помочь.Ошибка - ForbiddenAttributesError Ruby on Rails 4 Прохождение через API

Запрос на запрос ruby ​​webapi сделан для обновления данных участника в MongoDB. Я столкнулся вопрос

ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError) 

При поиске на Google это предположить, что некоторые атрибуты не передаются и необходимо проверить модель

Ниже моя модель

class ParticipantSession 
    include Mongoid::Document 
    embedded_in :participant 
    embeds_many :participant_activity_records 

    accepts_nested_attributes_for :participant_activity_records 
    alias_method :activity_records=, :participant_activity_records_attributes= 

    field :emergency_count, type: Integer 
    field :sb0_cumulative_time, type: String 
    field :sb1_cumulative_time, type: String 
    field :sb2_cumulative_time, type: String 
    field :sb3_cumulative_time, type: String 
    field :sb4_cumulative_time, type: String 
    field :sb5_cumulative_time, type: String 
    field :sb6_cumulative_time, type: String 
    field :sb7_cumulative_time, type: String 
    field :sb8_cumulative_time, type: String 
    field :sb10_cumulative_time, type: String 
    field :login, type: DateTime 

    def ordered_activities 
    participant_activity_records.sort_by(&:id) 
    end 

    def render renderer 
    renderer.render_participant_session(self) 
    end 
end 

Это, как данные передаются участник_session

participant.participant_sessions.new(participant_data['activity_records']) 

Данные, передаваемые в кумулятивном_time, являются s ниже

{"activity_records":{ 
"sb0_cumulative_time":"0", 
"sb1_cumulative_time":"0", 
"sb2_cumulative_time":"0", 
"sb3_cumulative_time":"0", 
"sb4_cumulative_time":"0", 
"sb5_cumulative_time":"0", 
"sb6_cumulative_time":"0", 
"sb7_cumulative_time":"0", 
"sb8_cumulative_time":"0", 
"sb10_cumulative_time":"0", 
"emergency_count":5, 
"login":"2016-02-33 19:40:12" 
} 
} 

Пожалуйста, помогите в решении ошибку

ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError) 

API контроллера Код

class Api::SessionsController < ApplicationController 
    respond_to :json 
    skip_before_filter :verify_authenticity_token 

    before_filter :protect_with_api_key 

    def update 
    status = true 
    participant_ids = [] 
    unless params[:participants].blank? 
     params[:participants].each do |participant_data| 
     participant = Participant.where(participant_id: participant_data['participant_id']).first 
     unless participant.present? 
      status = false 
      participant_ids << participant_data['participant_id'] 
     else 
      activity_records = participant_data['cumulative_time']['activity_records'] 
      participant_data['cumulative_time']['activity_records'] = [] if activity_records.nil? 
      participant.participant_sessions.new(participant_data['cumulative_time']) 
      participant.save! 
     end 
     end 
    end 

    if status 
     render :json => {status: "OK"} 
    else 
     render :json => {error: "No participant with id #{participant_ids.join(',')}"}, :status => 422 
    end 
    end 
    end 

данные помещаемые

Я передаю следующие данные API

{"participants":[ 
{"logout":"1970-01-01 05:30:00","login":"2016-02-33 19:40:12","cumulative_time":{"activity_records":[],"sb0_cumulative_time": "00h 00m 00s", 
      "sb1_cumulative_time": "00h 00m 00s", 
      "sb2_cumulative_time": "00h 00m 00s", 
      "sb3_cumulative_time": "00h 00m 00s", 
      "sb4_cumulative_time": "00h 00m 00s", 
      "sb5_cumulative_time": "00h 00m 00s", 
      "sb6_cumulative_time": "00h 00m 00s", 
      "sb7_cumulative_time": "00h 00m 00s", 
      "sb8_cumulative_time": "00h 00m 00s", 
      "sb10_cumulative_time": "00h 00m 00s", 
      "emergency_count": 0},"emergency_count":5, "participant_id":22} 
]} 

RAILS версия 4 используется.

Заранее спасибо.

ответ

1

Кажется, вам нужно разрешить параметр перед назначением ActiveModel.

Вот пример того, как разрешить данные

params.require(:activity_records).permit! 

см подробную информацию использования в официальной документации: http://api.rubyonrails.org/classes/ActionController/Parameters.html http://api.rubyonrails.org/classes/ActiveModel/ForbiddenAttributesError.html

+0

К сожалению ошибка не решена. –

+0

Извините, ошибка не разрешена. Он по-прежнему бросает ту же ошибку. Я изучаю ссылки на документацию, которые вы предоставили, и, если они разрешатся, обязательно ответит на этот ответ. –

+0

Если вы указали свой код контроллера, я могу помочь его решить. –

Смежные вопросы