ActiveRecord在外键中使用的字符串主键

时间:2012-06-01 21:30:56

标签: ruby-on-rails ruby-on-rails-3 activerecord

可以将ActiveRecord的主键覆盖为字符串,并具有以下自定义类型:

create_table :system_currencies, :primary_key => 'iso_code' do |t|
      t.column :iso_code, :string, :limit => 3
end

但是如何在其他引用它的模型中使用这个表/模型? 对于引用,ActiveRecord总是希望外键列以“_id”结尾并且是整数值。

这是真的吗? 在SystemCurrency使用字符串iso_code作为主键的情况下,如何从Order模型引用此类SystemCurrency模型?

1 个答案:

答案 0 :(得分:4)

您可以在联接中指定主键。例如:

class Order < ActiveRecord::Base
  belongs_to :system_currency, :primary_key => "iso_code"
end 

可以在http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

的Rails API中找到更多信息

这是你所追求的还是我误解了你的问题?