2015-11-13 45 views
1

我有这样的结构验证belongs_to的是在允许值

class Organization 
    has_many :clients 
end 

class Client 
    belongs_to :organization 
    has_many :contacts 
end 

class Contact 
    belongs_to :client 
    belongs_to :organization 
end 

我怎样才能确保在客户端分配到一个接触他是一个特定组织的一个孩子,而不是让客户从其他组织被分配?

在搜索时,我发现可以添加scope参数,但在分配client_id时似乎没有评估。

更新

下面是Rails的文档的例子:

validates :name, uniqueness: { scope: :year,message: "should happen once per year" } 

我正在寻找类似 “如果客户设置它必须在Organization.clients”

+2

如果一个客户只能属于一个组织,怎么会有一个“来自另一个组织的客户”?您是否在问如何防止将具有现有organization_id的客户分配到另一个客户? –

+0

我会做一个客户验证。 – chumakoff

+0

您的意思是,何时将客户分配给客户属于特定组织的联系人?我认为你需要澄清。 – dewyze

回答

1
class Contact 
    #... 
    validate :client_organization 

    def client_organization 
    unless client.nil? 
     unless organization == client.organization 
      errors.add(:organization, "can't be different for client.") 
     end 
    end 
    end 
end 
+0

我认为,根据原来的帖子,断言可能需要'如果客户!=无&&组织!=客户组织!这听起来像客户可能不需要。 – dewyze

+0

考虑您的评论我已更新我的回答。现在好吗? – sadaf2605

+0

直到现在我已经使用了自定义验证,我很好奇,看看是否有使用范围之类的方法。我最终保持这种变化。感谢你的回答。 – Mihai