Rails协会。他们是如何工作的?

时间:2014-08-31 19:20:05

标签: ruby-on-rails ruby associations has-many

协会的确切目的是什么?我理解关系的含义以及何时使用每种类型,例如:

belongs_to, has_many, has_one , has_and_belongs_to_many, ect

但是我不明白他们在轨道内如何连接东西的目的是什么。任何输入将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

你在呼唤什么"协会"我打电话给"宏"。也就是说,belongs_tohas_many等宏只是在ActiveRecord对象上调用的类方法,当调用它们时,会根据关联名称定义一堆功能。

那么,您要问的是:这些宏方法定义了哪些功能?答案就在于每种方法的Rails文档中:

而且,您应该阅读ActiveRecord::Associations::ClassMethods上的整体文档。

但是,简而言之,这些宏根据您传递给它们的关联名称定义名称的方法。所以,例如:

belongs_to :my_object

将定义,作为一个非常简单的例子:

def my_object
  MyObject.find_by_id(my_object_id)
end

所以它基本上就像元编程你的对象一样,需要找到其他相关对象,更新它们的集合等所需的方法。