【问题标题】:How do I validate that has_one association exists?如何验证 has_one 关联是否存在?
【发布时间】:2019-11-19 01:33:01
【问题描述】:

我有两个型号PersonAddress

class Person < ApplicationRecord
    has_one :address
end
class Address < ApplicationRecord
    belongs_to :person
end

如何验证每个指向另一个?

我想做类似的事情:

class Person < ApplicationRecord
    has_one :address
    validates :address, presence: true
end

这当然行不通,因为address 不是Person 的属性。

Rails 中确保一条记录与另一条记录有效关联的正确方法是什么?

【问题讨论】:

  • has_one :address, required: true 为你做点什么吗?
  • 您要检查关联地址是否有效,还是要检查该人是否始终拥有地址?

标签: ruby-on-rails validation ruby-on-rails-5


【解决方案1】:
class Person < ApplicationRecord
    has_one :address, required: true
end
class Address < ApplicationRecord
    belongs_to :person
end

查看https://apidock.com/rails/v5.2.3/ActiveRecord/Associations/ClassMethods/has_one选项部分中的required选项

Rails 5 中的belongs_to 现在是自动需要的,因此您无需在Address. 中添加任何不同的内容

【讨论】:

    【解决方案2】:

    您需要使用validates_associated :address 来验证关联

    【讨论】:

      猜你喜欢
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多