我已经考虑了一段时间,虽然它看起来很简单,但我似乎并不能真正做到"正确"。基本上,我有两个班,公司和员工。它是这样设置的,即一个公司有_many个雇员,而雇员属于一个公司。我也使用STI,所以我有那个公司<用户和员工<使用者所有这些都足够好了。现在,员工只能做两件事:查看自己的个人资料并更新。另一方面,公司可以创建员工。在应用程序中,这是创建员工的唯一方法。我的问题是,我想让它尽可能简单,同时也考虑到我可能会在某个时候制作一个API。所以我的问题是,在这里什么是好的做法?我应该将"员工"作为"公司"下的嵌套资源吗?我应该在Companies命名空间下创建Employees资源吗?我应该把所有操作都保存在employees_controller中,然后使用权限允许公司访问它们吗?似乎我尝试的每一件事最终都感觉"不对"。
根据您的询问,似乎有两种类型的用户:普通用户(不是雇员)和雇员。Rails在模型之间具有belongs_to
和has_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