gpt4 book ai didi

ruby-on-rails - 验证关联的唯一性

转载 作者:行者123 更新时间:2023-12-03 23:44:34 25 4
gpt4 key购买 nike

鉴于以下类:

class Candidate
has_many :applications
has_many :companies, :through => :job_offers
end

class JobOffer
belongs_to :company
end

class Application
belongs_to :candidate
belongs_to :job_offer
end

enter image description here

如何在 Rails 上验证之前的语句(在图像中)?

更新时,在应用程序上添加以下验证将不起作用:
def validate_uniqueness_of_candidate_within_company
errors.add(:job_offer_id, "...") if candidate.companies.include?(company)
end

当尝试将应用程序更改为同一公司候选人的不同 JobOffer 时,公司将返回该公司。

我也尝试在应用程序上做这样的事情:
validates_uniqueness_of :user_id, :scope => {:job_offer => :company_id}

但它也没有奏效。
有什么想法可以解决这个问题而不必使用 10 行糟糕的代码?

最佳答案

可能有许多可接受的方法来解决您的问题,但我认为最重要的是您试图对不(直接)具有所有属性(companyuser)的表强制执行唯一性约束。 )。我会去规范化 company信息进入应用程序表( user_idjob_offer_idcompany_id )并始终将其设置在 before_save 中回调以匹配 job_offercompany .然后您应该能够使用作用域唯一性验证:

class JobApplication < ActiveRecord::Base
belongs_to :user
belongs_to :job_offer
belongs_to :hiring_company, :class_name=>"Company", :foreign_key=>"company_id"

before_save :set_hiring_company

def set_hiring_company
self.hiring_company = job_offer.hiring_company
end

validates_uniqueness_of :user_id, :scope => :company_id
end

关于ruby-on-rails - 验证关联的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965089/

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