2013-07-22 52 views
0

在Ruby API,为has_many关联的例子是红宝石API的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表示在Firm的任意实例上调用clients的方法。以这种方式使用的#不是Ruby语法的一部分,但是是一个建立的约定。

3

此语法是文档语法,指示它是实例方法,而不是类中的方法。

Array#sort表示有一个sort方法可用于Array的实例。

如果显示Array.new,则表明它是Array类本身的方法。

它只是为我们的利益,而不是Ruby的解析器。