Ruby on rails Rails:查找实例的关系名称

Ruby on rails Rails:查找实例的关系名称,ruby-on-rails,activerecord,relationship,Ruby On Rails,Activerecord,Relationship,假设我们有这种关系: class Company < ActiveRecord::Base has_one :company_address, class_name: 'Address', foreign_key: 'company_address_id' has_one :overseas_address, class_name: 'Address', foreign_key: 'overseas_address_id' end class公司

假设我们有这种关系:

class Company < ActiveRecord::Base
  has_one :company_address, class_name: 'Address', foreign_key: 'company_address_id'
  has_one :overseas_address, class_name: 'Address', foreign_key: 'overseas_address_id'
end
class公司
如果我在新的地址实例中撬
,是否可以返回
:company\u Address
:overseas\u Address

字段是相同的,但我想做不同的验证

是的,有其他解决问题的方法,但我更感兴趣的是,找到这段关系的名字是否真的可能


谢谢

您应该在地址模型中有相应的归属:然后尝试
地址。反映所有关联(归属)
它将返回一个
ActiveRecord::Reflection::AssociationReflection
集合,该集合将具有不同的
名称(取决于您的归属)

为了检查实例,您应该将您的归属tos标记为<代码>反向\ of::put \ u对应\ u关联
,您的一个作为归属tos的反向\ u,然后您可以检查相应的方法(由归属tos生成)是否存在母公司对象

这个想法是假设一个地址为

class Address < ActiveRecord::Base
  belongs_to :company, class_name: 'Company', foreign_key: 'company_address_id', inverse_of: :company_address
  belongs_to :oversea, class_name: 'Company', foreign_key: 'overseas_address_id', inverse_of: :overseas_address
end

class Company < ActiveRecord::Base
  has_one :company_address, class_name: 'Address', foreign_key: 'company_address_id', inverse_of: :company
  has_one :overseas_address, class_name: 'Address', foreign_key: 'overseas_address_id', inverse_of: :oversea
end

这里有更多的解释,谢谢你的回答。我知道这对数据库中的记录是如何起作用的。但不是为了一个新的例子?是的。我有
:我所属的
的逆\u。因此,在我的地址中,我可以查看相应的公司。但这并没有给我任何提示,说明我当前使用的地址是标准地址还是海外地址。创建公司时,这两个属性都可以创建为嵌套属性。这有助于解释我的问题吗?再次–感谢您的回复。我错过了您应该在您的have_________________________________?
address.company == nil
address.oversea == company