首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >has_many中的has_one

has_many中的has_one
EN

Stack Overflow用户
提问于 2012-12-04 04:46:06
回答 1查看 137关注 0票数 0

我有一个我正在与之斗争的协会。我有一个部门模型,它可以有许多员工,其中一个是经理。

我需要能打电话。

Department.staff -并获取包括经理在内的所有员工的集合。Department.manager -把经理叫来。

User.department -并获得用户部门,无论他们是员工还是经理。User.is_manager -并获取关于他们是否管理部门的布尔值。User.manages -获取他们管理的部门。

建立这个协会最好的地方是什么?我现在已经开始这样做了:

代码语言:javascript
复制
class User < ActiveRecord::Base
      belongs_to :department
      has_one :manages, :class_name => 'Department', :foreign_key => :manager_id
end

class Department < ActiveRecord::Base
      belongs_to :manager, :class_name => "User"
      has_many :staff, :class_name 'Users'
end

我的问题是,我必须将经理同时添加为经理和员工,这感觉有点笨拙-但也许我太挑剔了?

有没有人能推荐一些更好的选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 05:03:22

尝试此关联:

代码语言:javascript
复制
class Department < ActiveRecord::Base
  has_many :staffs, class_name: "User"
  has_one :manager, class_name: "User", foreign_key: "manager_id"
end

class User < ActiveRecord::Base
  belongs_to :department
end

确保您的User表有一个名为manager_id的列和一个名为department_id的列。如果您的User表中有一个名为manager的布尔列,那么您将拥有一个manager?方法来检查用户是否是管理者。

做你想做的事:

代码语言:javascript
复制
@department = Department.find(1) # Find department with id = 1
@department.staffs # Get all staffs of department

@department.manager.name # Get name of manager of department

@user = User.find(1) # Find user with id = 1
@user.department.name # Get name of department which user belongs to
@user.manager? # Return value of manager column
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13691393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档