在ruby API中,has_many关联的例子是
示例:Firm类声明has_many:clients,它将添加:
Firm#clients (similar to Clients.find :all, :conditions => ["firm_id = ?", id])
Firm#clients<<
Firm#clients.delete
Firm#clients=
Firm#client_ids
为什么不学习firm.client,firm.clients<lt;等等。#符号是什么意思?
如果它像Firm.clients
一样编写,则意味着它是对Firm
的方法调用,而不是对其实例的方法调用。如果有一个特定实例firm
要在其上调用该方法,则可以编写firm.clients
。API的一个目的是显示类的任何实例上都可以使用哪些方法。Firm#clients
表示clients
对Firm
的任意实例的方法调用。以这种方式使用的#
不是Ruby语法的一部分,而是一种既定的约定。
此语法是文档语法,表示它是实例方法,而不是类上的方法。
Array#sort
指示存在可用于Array
的实例的sort
方法。
如果它显示Array.new
,那么这表明它是Array
类本身上的一个方法。
它只是为了我们的利益,而不是Ruby的解析器。