Я являюсь разработчиком .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 используется.
Заранее спасибо.
К сожалению ошибка не решена. –
Извините, ошибка не разрешена. Он по-прежнему бросает ту же ошибку. Я изучаю ссылки на документацию, которые вы предоставили, и, если они разрешатся, обязательно ответит на этот ответ. –
Если вы указали свой код контроллера, я могу помочь его решить. –