Rails 中有关代理的使用方法

来源:互联网 发布:石杉碱甲 知乎 编辑:程序博客网 时间:2024/06/05 15:38

=== Rails 中有关代理的使用方法 ===

yanglei. 2011-01-18

表定义:

  users: id, login, name, department_id

  departments: id, name, code


类定义:

class User < ActiveRecord::Base
  belongs_to :department

  delegate :name, :to => :department
  delegate :code, :to => :department
end

示例:

1、如果代理名称与原模型中属性重名,则默认为模型中属性名

   users = User.all
   puts users[1].name  => yanglei(用户表中的name信息)
   puts users[1].code  => zws(部门表中的code信息)

2、使用前缀

   将User类中的改为:
   delegate :name, :to => :department, :prefix => "department"
   delegate :code, :to => :department, :prefix => "department"

   则:
   users = User.all
   puts users[1].department_name  => 智网所(部门表中的name信息)
   puts users[1].department_code  => zws(部门表中的code信息)