检查 child 有值的记录是否存在

Check if record exists where child has value

我正在构建一个界面,人们可以在其中为各种网站的内容提交标签,因此每个 Submission 都有一个参数 domainhas_one :tag

诀窍是我想在保存之前检查该标签之前是否已为该域提交。

类似于:

Submission.where(domain: submission_params[:domain], tag.tag_text: submission_params[:tag][:tag_text]).exists?

为了能够查询关联的 table,您应该加入它。在您的情况下,joins 就是您要查找的内容 (INNER JOIN):

Submission.joins(:tag)
          .where(
            submissions: { domain: submission_params[:domain] },
            tags:        { tag_text: submission_params[:tag_attributes][:tag_text] }
          ).exists?