Rails: как скрыть атрибут модели? - PullRequest
2 голосов
/ 21 сентября 2011

Я получил модель "Комментарий" в Ruby с несколькими атрибутами: имя пользователя, дата_добавления, дата изменения и т. Д. Когда я создаю экземпляр этой модели, называю его "i" и вызываю i.attributes, он дает мне все атрибуты для этой модели. Есть ли способ сделать так, чтобы он не возвращал несколько атрибутов, которые я хочу оставить приватными.

Причина в том, что я лениво вызываю to_json для i.attributes, и некоторые модели содержат конфиденциальную информацию, такую ​​как пароль, и я хочу сделать их конфиденциальными.

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Попробуйте использовать параметры: only или: кроме для метода #to_json. Например:

@comment.to_json(:only => [ :username, :date_added, :modify_date ])

... или без хэш-ракет, если вы используете Ruby 1.9 ...

@comment.to_json(only: [ :username, :date_added, :modify_date ])
1 голос
/ 21 сентября 2011

Одна идея состоит в том, чтобы "переопределить" метод to_json в моделях, которые имеют конфиденциальные данные

0 голосов
/ 21 сентября 2011

Вы можете создать метод, такой как Comments.public_attributes, который возвращает только те атрибуты, которые вам нужны.

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