2017-03-02 106 views
0

除了询问其名称是否以_id结尾?我可以测试ActiveRecord的属性是否是外键?

如果我要以上述方式测试属性,是否可以推广?这样做对我目前的使用情况来说已经足够了。但是我可能会在另一个宇宙中想要制造我锻造的一些工具的宝石。我猜那些真正想用外键创建模型的人不会以_id结束。 D-Side向我指出this

按照惯例,Rails的假设,用于保存这个模型外 键的列是后缀添加_id 协会的名称。该:foreign_key选项,您可以直接设置外 键的名称

有没有一种方法来检测,其中有人已经用第二个选项的情况下?

回答

1

你应该能够得到外键列表的东西,如:

all_reflections = self.class.reflections. 
         select{ |n, r| r.macro == :belongs_to }. 
         map{ |name, reflection| reflection.foreign_key } 

如果你要经常做,我会缓存结果

相关问题