验证belongs_to是否为允许值

时间:2015-11-13 21:53:27

标签: ruby-on-rails ruby-on-rails-4

我有这个结构

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"

1 个答案:

答案 0 :(得分: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