与列名称相同的Rails关系

时间:2013-01-15 12:18:45

标签: ruby-on-rails model conflict

我对rails有点问题。我有一个继承的数据库(hense the wacky column names),看起来有点像这样:

customer
---------
Customer_ID | name | fleet_size | category
1             'bob'     20          60

category
----------
Category_ID | Description
1               'Example Category'

因此,客户属于某个类别,而某个类别拥有许多客户。模型看起来像这样:

class Category < ActiveRecord::Base
  set_table_name "category"

  has_many :customers, :foreign_key => "category"
end

class Customer < ActiveRecord::Base
  set_table_name "customer"

  belongs_to :category, :foreign_key => "Category_ID"
end

由于customers表中category列的名称,我认为可能存在冲突,这意味着我无法在视图中调用@customer.category.Description。有关解决这个问题的任何想法吗?

2 个答案:

答案 0 :(得分:1)

您始终可以重命名关联:

belongs_to :something_else, :class_name => "Category", :foreign_key => "Category_ID"

答案 1 :(得分:1)

更改关联名称并用作

belongs_to :cust_category, :foreign_key => "Category_ID", :class => 'Category'

@customer.cust_category.Description

可能会解决您的问题。