Переопределение метода атрибутов активной записи - PullRequest
0 голосов
/ 08 сентября 2018

Я хотел перезаписать метод активной записи по умолчанию attributes, потому что я не хочу возвращать created_at и updated_at в моих ответах json любой модели.

вот что я сделал.

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true

  def attributes
    super.except('created_at', 'updated_at')
  end
end

Это работало хорошо для меня в течение последних нескольких месяцев. Но теперь я столкнулся со сценарием, согласно которому я не должен отправлять атрибут password из моей модели User. Итак

class User < ApplicationRecord
  def attributes
    super.except('password')
  end
end

Это сработало как шарм, когда я запускаю его с консоли rails. Но когда я запускаю его из контроллера, я действительно не знаю, по какой причине, но это идет по бесконечному циклу. А вот и мой контроллер действий.

def update
  @object = klass.find(id)
  @object.update_attributes!(update_params)
  render json: {
    status: true,
    message: 'Saved Successfully..!',
    data: object_json(@object)
  }
end

def object_json(object)
  object.as_json.except('updated_at', 'created_at')
end

Может ли кто-нибудь помочь мне в этом.

1 Ответ

0 голосов
/ 08 сентября 2018

Лучший способ контролировать, какие атрибуты вы хотите отобразить в ответах JSON, - это использовать сериализатор, как, например, active_model_serializers

Хорошую статью об этом можно найти здесь ОБСЛУЖИВАНИЕ ПОЛЬЗОВАТЕЛЯ JSON

Я бы не рекомендовал перезаписывать активную запись по умолчанию attributes метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...