1、源码文档链接
2、用法示例
假设有一张学生表和班级表,Student belongs_to Class,Class has_many Student
学生表(Student):id, name, class_id
班级表(Class):id, class_name
如果要找班级的所有同学,很简单,class.students即可,那么反过来,找同学所属班级应该怎么样呢?
在rails中,有delegate可以帮助我们完成。完成方法有很多种,以下说明两种:
- 假设delegate的方法名和属性名一样
在学生表中,可以通过添加以下代码实现:
delegate :class_name, to: :Class
这样,就可以直接进行查找
Student.new.class_name
- 假设delegate的方法名和属性名不一样
在学生表中,添加以下代码:
delegate :class , to: :Class
这时,需要在Class表中添加class 方法
def class
self.class_name
end
这时就可以直接进行查找
Student.new.class