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