首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:查找实例的关系名称

Rails:查找实例的关系名称
EN

Stack Overflow用户
提问于 2015-03-04 12:24:16
回答 1查看 148关注 0票数 1

假设我们有这样的关系:

代码语言:javascript
复制
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是可能的吗?

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

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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生成)是否存在父公司对象

这个想法是把地址设为

代码语言:javascript
复制
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

然后

代码语言:javascript
复制
address.company == nil
address.oversea == company
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28854457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档