Rails 5 колонка с именем Root плохо себя ведет - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь создать спокойный API в Rails 5, у одного из моих классов есть атрибут с именем root. Этот атрибут root вызвал несколько ошибок, я приведу один пример. Является ли root защищенным именем атрибута в рельсах или ruby?

class ObjectsController < ApplicationController
  before_action only: %i[create]

  def create
    @object = Object.create(object_params)
    render json: @object
  end

  private


  def object_params
    params.require(:object).permit(:id, :root)
  end

Когда я публикую в / objects / что-то вроде следующего:

{"object": {"id": "manual_id" , "root": "manual_root"}}

Мне возвращается в Почтальоне:

{
    "id": "manual_id",
    "root": null,
    "extension": "manual_extension"
}

Но в базе данных MySQL значение для root равно manual_ root. У кого-нибудь есть какие-либо идеи о том, в чем может быть проблема.

1 Ответ

0 голосов
/ 20 января 2020

Решением было добавить псевдоним атрибута в модель следующим образом:

class Object < ApplicationRecord
  alias_attribute :object_root, :root
end

и использовать этот атрибут в классе сериализатора объекта:

class ObjectSerializer < ActiveModel::Serializer
  attributes :id, :object_root
end

Так что моя проблема была с Сериализатор активной модели, я считаю, что root является зарезервированным ключевым словом. Вот похожая проблема: https://github.com/rails-api/active_model_serializers/issues/1135

...