gpt4 book ai didi

mysql - 验证同一个表中引用同一个表的两个外键

转载 作者:行者123 更新时间:2023-11-29 11:15:53 26 4
gpt4 key购买 nike

我的表格卡中有两个字段:user_idassignee_id。他们都引用我的用户表中的用户。第一个的存在是必需的,但第二个则不需要。

在我的验证中,我想检查第一个的完整性和存在性,并且仅检查第二个(如果已填充)的完整性。

我已经尝试过,但它不起作用:

  belongs_to :user
belongs_to :assignee, :class_name => 'User', :foreign_key => :assignee_id

validates_presence_of [:title, :user_id]
validates :user, presence: true
validates :assignee_id

请问有人知道如何正确操作吗?预先感谢您。

最佳答案

在这种情况下,您通常会使用 ActiveRecord::Validations#validate 创建自定义验证。 .

validates :user_id, presence: true
validate :integrity_of_assignee_id, if: ->(obj) { obj.assignee_id.present? }

private

def integrity_of_assignee_id
# Add error to the field if the `assignee_id` is invalid
errors.add(:assignee_id, 'Not valid assignee_id') unless User.find_by(id: assignee_id)
end

关于mysql - 验证同一个表中引用同一个表的两个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com