我可以测试ActiveRecord的属性是否是外键吗?

时间:2017-03-02 18:16:51

标签: ruby-on-rails foreign-keys

除了询问其名称是否以_id结尾?

如果我以上述方式测试属性,它是否可以推广?这样做绝对足以满足我目前的用例。但我可能会在一些替代宇宙中想要制作一些我正在锻造的工具。我猜那些真正想要的人可以使用不在_id结尾的外键来设置模型。 D-Side向我指出this

  

按照惯例,Rails假定用于保存外来的列   此模型上的键是带有后缀_id的关联的名称   添加。 :foreign_key选项允许您设置外部名称   直接关键

有没有办法检测某人已经选择第二种选择的情况?

1 个答案:

答案 0 :(得分:1)

您应该能够获得一个外键列表,例如:

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

如果您经常这样做,我会缓存结果