即使它正常工作,我也对它如何工作感到有些困惑。我有一个模型与同一个模型有两个关联。
公司有一个老板,公司有很多员工的类用户。
这是我的公司模型:
class Company < ActiveRecord::Base
validates_presence_of :name
has_many :employee, :class_name => 'User'
has_one :owner, :class_name => 'User'
accepts_nested_attributes_for :owner, :allow_destroy => true
end
这是我的用户模型:
class User < ActiveRecord::Base
include Clearance::User
attr_accessible :lastname, :firstname #other attr are whitelisted in clearance gem
validates_presence_of :lastname, :firstname
belongs_to :company
end
现在假设我有这家公司的 3 名员工,包括所有者。当我第一次创建公司时,我将所有者设置为 ID 为 1 的员工,另外两个 (2,3) 通过设置其 company_id (user.company=company) 添加到员工列表中。这三个都将他们的 company_id 设置为我们可以假设为 1 的公司 ID
当我询问 company.owner 时,我得到了正确的用户,当我询问 company.employee 时,我得到了所有三个。
如果我将所有者更改为用户 2,它会通过将其 company_id 设置为 nil 来自动从员工中删除用户 1。这很好,如果我将他添加为简单的员工,一切仍然很好。
rails 怎么知道哪个是哪个?我的意思是它如何知道员工是所有者而不仅仅是员工?架构中的任何内容都没有定义这一点。
我有一种感觉我应该扭转所有者关联并使公司属于用户。