例如,如果我的Book实体中有一个字段author_id
,并且我添加了belongs_to :author
,则创建方法author
以访问此id引用的对象。
我还可以使用以下行来更具体一些:
belongs_to :author, :primary_key => 'p_code', :foreign_key => 'writer_code'
它仍然创建了author方法。我需要的是,拥有writer_code
字段名称,我需要获取生成的author
方法名称,或者至少提供实体名称。我确定Rails应该将所有这些关系存储在某个表的某个表中,我只需要访问它并找到它。有什么想法吗?
答案 0 :(得分:1)
ActiveRecord
动态确定大多数信息;它不会在DB中存储内容。
例如,您可以尝试:
Book.reflect_on_association(:author)
这将返回ActiveRecord::Reflection::AssociationReflection
的实例,该实例封装此关联的所有AR信息存储信息,包括@options
哈希,其中包含:foreign_key
和:class_name
等密钥(如果已提供自定义值。)
如果您不知道关联的名称,则可以反映与reflect_on_all_associations方法的所有关联。从那里它应该是一个直接的集合和散列遍历:迭代它们并检查你已经知道的foreign_id
。