1

在 ruby​​ API 中,has_many 关联的示例是

示例:一个公司类声明了 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.clients、firm.clients<<等方法。#号是什么意思?

4

2 回答 2

3

如果它是这样写的Firm.clients,那么这意味着它是一个方法调用Firm,而不是它的实例。firm如果有要调用该方法的特定实例,则可以编写firm.clients. API 的一个目的是显示在类的任何实例上可用的方法。表示对 的任意实例的Firm#clients方法调用。以这种方式使用不是 Ruby 语法的一部分,而是一个既定的约定。clientsFirm#

于 2013-07-22T07:35:35.073 回答
3

此语法是文档语法,表明它是实例方法,而不是类上的方法。

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

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

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

于 2013-07-22T08:04:10.467 回答