Rails,建模公司/员工关系

时间:2012-08-31 14:36:18

标签: ruby-on-rails

我一直在考虑这个问题,虽然看起来很简单但我似乎无法让它“正确”。 我所拥有的基本上是两类,即公司和员工。它的设立是为了使公司拥有多名员工,员工属于公司。我也使用STI,所以我有那个公司<用户和员工<用户。这一切都足够好了。现在,员工只能做两件事:查看他们自己的个人资料并进行更新。另一方面,公司可以创建员工。在应用程序中,这是创建员工的唯一方法。我的问题是,我想让这个尽可能简单,同时考虑我可能会在某些时候制作API。所以我的问题是什么被认为是良好的做法?我应该让员工成为公司下的嵌套资源吗?我应该在公司名称空间下创建一个Employees资源吗?我应该只保留employees_controller中的所有操作,然后使用权限允许公司访问它们吗?似乎我尝试的一切最终都感觉“不对”。

1 个答案:

答案 0 :(得分:0)

根据您的要求,似乎有两种类型的用户:普通用户,不是员工和员工。 Rails在模型之间具有belongs_tohas_many的关系。所以对于公司你可以这样做:

class Company < ActiveRecord::Base
   has_many :users, :dependent => :destroy


class User < ActiveRecord::Base
   attr_accessible :is_employee
   belongs_to : company

User模型中,有一个列名is_employee,用于存储布尔值。这样,您可以同时拥有员工和非员工。在Company中,如果Company被销毁,其Users将会消失。

有关这些关系的更多文档可在此处找到: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html