Почему AR не позволяет мне сделать атрибут установки приватным, используя `private: accept =`? - PullRequest
0 голосов
/ 02 августа 2011

Я только что установил новый логический атрибут accepted для моей модели, который выглядит следующим образом:

class Invitation < ActiveRecord::Base

  attr_protected :accepted
  ...

end

Я хочу, чтобы он был личным атрибутом, однако, когда я пытаюсь удалить публичный установщик следующим образом:

class Invitation < ActiveRecord::Base

  attr_protected :accepted
  private :accepted=
  ...

end

Я получаю немедленный сбой типа:

invitation.rb:17:in `private': undefined method `accepted=' for class `Invitation' (NameError)

Почему AR не определяет сеттер? Я знаю, что мог бы сделать это, определив метод от руки, но меня интересует, почему я не могу использовать сокращенный маршрут private :accepted=.

1 Ответ

0 голосов
/ 02 августа 2011

Методы получения и установки атрибутов не являются реальными методами, они реализованы с использованием method_missing в ActiveRecord. Вот почему вы не можете манипулировать ими, используя private.

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