2013-07-22 3 views
0

В рубинового API, примеры для has_many ассоциацийрубин синтаксис апи has_many знак #

Пример: Фирма класс объявляет HAS_MANY: клиенты, которые будут добавлять:

Firm#clients (similar to Clients.find :all, :conditions => ["firm_id = ?", id]) 
Firm#clients<< 
Firm#clients.delete 
Firm#clients= 
Firm#client_ids 

почему arn't методы firm.clients, firm.clients < < и т. д., что означает знак #?

ответ

3

Если бы это было написано как Firm.clients, это означало бы, что это вызов метода на Firm, а не на его экземплярах. Если есть конкретный экземпляр firm, на который вы хотите вызвать метод, вы можете написать firm.clients. Одна из целей API - показать, какие методы доступны для любого экземпляра класса. Firm#clients означает вызов метода clients на произвольном экземпляре Firm. #, используемый таким образом, не является частью синтаксиса Ruby, но является установленным соглашением.

3

Этот синтаксис является синтаксисом документации, указывающим, что это метод экземпляра, а не метод класса.

Array#sort указывает, что существует метод sort, доступный для экземпляров Array.

Если он показывает Array.new, это означает, что это метод на самом Array.

Это только для нашей выгоды, а не анализатора Ruby.

Смежные вопросы