Скрыть поле в Ruby on Rails
У меня есть поле в моей базе данных под названием IP, где я помещаю IP пользователя (в метод #create), когда он отправляет сообщение в моем блоге, встроенном в Rails.
но поле отображается, когда я хочу видеть статьи в другом формате (JSON). Как скрыть поле IP?
2 ответов
Вы можете сделать это в блоке формата в вашем контроллере следующим образом:
respond_to do |format|
format.json { render :json => @user, :except=> [:ip] } # or without format block: @user.to_json(:except => :ip)
end
Если вы хотите вообще исключить определенные поля, просто перезапишите метод to_json в вашей модели пользователя:
class User < ActiveRecord::Base
def to_json(options={})
options[:except] ||= [:ip]
super(options)
end
end
хотя это не совсем правильное решение для паролей или для того, что конкретно спрашивается, это то, что появляется, когда вы google для скрытия столбцов в ActiveRecord, поэтому я собираюсь поместить это здесь.
Rails5 представил новый API,ignored_columns
, это может заставить activerecord игнорировать, что столбец существует полностью. Что Я на самом деле хотел, и многие другие, приехав сюда через Google, вероятно, тоже.
Я сам еще не пробовал.
class User < ApplicationRecord
self.ignored_columns = %w(employee_email)
end
https://blog.bigbinary.com/2016/05/24/rails-5-adds-active-record-ignored-columns.html