您的地址模型中应该有相应的belong_to:,然后尝试Address.reflect_on_all_associations(belongs_to)
它将返回ActiveRecord::Reflection::AssociationReflection 的集合,其中将有不同的name(取决于您的belong_to)
为了检查实例,你应该将你的belong_tos标记为inverse_of: :put_corresponding_association,你的has_one标记为inverse_ofbelong_tos,然后你可以检查相应的方法(由belong_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
你创建地址为address = company.overseas_address.new
然后
address.company == nil
address.oversea == company