从Rails中的关联获取外键字段

Dip*_*ngh 14 activerecord ruby-on-rails redmine

我想知道Rails中给定模型的表标题对应的字段名称.

我正在使用查询模型显示标题.

query.columns.map {| Q | q.caption}
=> ["跟踪器","状态","优先级","主题","受让人","目标版本","截止日期","完成百分比"]

列具有与标题对应的名称

query.columns.map {| Q | q.name}
=> [:tracker,:status,:priority,:subject,:assigned_to,:fixed_version,:due_date,:done_ratio]

我的模型看起来像

Issue.columns.map {| Q | q.name}
=> ["id","tracker_id","project_id","subject","description","due_date","category_id","status_id","assigned_to_id","priority_id","fixed_version_id" ,"author_id","created_on","updated_on","start_date","done_ratio","estimated_hours","parent_id"]

我想从上面的信息中获取与标题对应的字段名称(db字段名称).

模型中的样本关联

belongs_to :assigned_to, :class_name => 'Principal', :foreign_key => 'assigned_to_id'
Run Code Online (Sandbox Code Playgroud)

所以对于上面的关联,我想知道外键.

因为assigned_to我想要'assigned_to_id'

Fre*_*ung 20

reflections散列持有这样的信息:

Issue.reflections['assigned_to'].foreign_key
Run Code Online (Sandbox Code Playgroud)

您还可以获取其他信息,例如class(.active_record)或关联类型(.macro).在rails 4.2之前,此哈希的键是符号而不是字符串.