如何获取foreign_key列的名称

时间:2011-06-30 22:25:19

标签: ruby-on-rails

我正在使用Rails 3,我有一个简单的模型

class Post
  has_many :comments
end

我正在进行一些元编程,我需要知道comments表中foreign_key的名称。

在上述情况下答案是

post_id

然而,由于用户可以进行配置,因此可能是任何事情。

假设您有权访问Post和Comment两个类,您将如何获得foreign_key的名称?

更新:经过一些测试后,这就是我得到的。

> User.reflections[:phone_numbers].instance_variable_get('@primary_key_name')
 => "user_id" 

以上解决方案适用于

class User
  has_many :phone_numbers
end

1 个答案:

答案 0 :(得分:0)

  

我需要知道comments表中foreign_key的名称。

     

你如何得到foreign_key的名字?

试试这个:

. rails console
Loading development environment (Rails 3.0.9)
irb(main):001:0> "Post".foreign_key
=> "post_id"

这是完整的Documentation。请让我知道这对你有没有用。我没有在自定义外键上试过这个。希望这会有所帮助。