假设我们有这样的关系:
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如果我在一个新的pry地址实例中使用,那么返回:company_address或:overseas_address是可能的吗?
字段是相同的,但我想做不同的验证。
是的,有解决问题的其他方法,但我更感兴趣的是,是否有可能找到这段关系的名字。
谢谢!
发布于 2015-03-04 13:11:13
您应该有相应的belong_to:在您的地址模型中,然后尝试Address.reflect_on_all_associations(belongs_to),它将返回一个具有不同name (取决于您的belong_to)的ActiveRecord::Reflection::AssociationReflection集合。
为了检查实例,应该将belong_tos标记为inverse_of: :put_corresponding_association,将has_one标记为inverse_of belong_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 == companyhttps://stackoverflow.com/questions/28854457
复制相似问题