The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
posts - 304, comments - 1869, trackbacks - 68, articles - 3
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
  或许存在这样的情况,在一个表中,一条记录关联到表中的另一条记录,例如,公司中的每个雇员都有上级和下级,而他们同时又是雇员,在Rails中你可以这样使用Employee类:

 

class Employee < ActiveRecord::Base

belongs_to :manager,

:class_name => "Employee",

:foreign_key => "manager_id"

belongs_to :mentor,

:class_name => "Employee",

:foreign_key => "mentor_id"

has_many :mentored_employees,

:class_name => "Employee",

:foreign_key => "mentor_id"

has_many :managed_employees,

:class_name => "Employee",

:foreign_key => "manager_id"

end

让我们使用一些数据,这里雇员ClemDawn都有上级和下级:

Employee.delete_all

adam = Employee.create(:id => 1, :name => "Adam")

beth = Employee.create(:id => 2, :name => "Beth")

clem = Employee.new(:name => "Clem")

clem.manager = adam

clem.mentor = beth

clem.save!

dawn = Employee.new(:name => "Dawn")

dawn.manager = adam

dawn.mentor = clem

dawn.save!

现在我们可以通过关联,来回答“X的下属是谁?”,“Y的上级是谁?”。

p adam.managed_employees.map {|e| e.name} # => [ "Clem", "Dawn" ]

p adam.mentored_employees # => []

p dawn.mentor.name # => "Clem"


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印