ruby on rails -一个非常具体的ActiveRecord验证



我将尽我所能解释我的困境。

我有两个型号用户设备

Devices有一个type列。例如,它可以是平板电脑或智能手机。

我有另一个模型所有权

这个模型既属于用户也属于设备,所以它将在表中包含匹配用户和设备的条目,表示该用户拥有该设备。

我需要在所有权模型上设置一些验证,主要的验证开始。

  • 没有设备可以有多个所有权条目(简单的验证device_id列是唯一的)
  • 对于每种可用的设备类型,用户只能拥有一个设备的所有权。

那么我如何对最后一部分进行验证呢?我不能将client_id表设置为唯一,因为它们将有多个条目用于不同类型的设备。但我希望每种设备只有一行。

我希望这有意义。如果你需要更多的细节,请告诉我。我将感谢任何见解!

谢谢!

validates :device_id, uniqueness: true
validate :device_type_unique?
def device_type_unique?
  if Ownership.includes(:device).where('devices.type = ? AND ownerships.user_id = ?', self.device.type, self.user_id)
    errors.add(:user_id, "Can only own one device type.")
  end
end

相关内容

  • 没有找到相关文章

最新更新