是否可以使用文本字段作为外键(使用ActiveRecord)?

时间:2011-11-05 15:54:31

标签: ruby-on-rails activerecord

是否可以使用字符串字段作为外键(使用ActiveRecord)?

实际例子:

我有2个型号:

class Book < ActiveRecord::Base
  belongs_to :kind
end

class Kind < ActiveRecord::Base
  has_many :books
end

想要在书表中使用通常的'kind_id'(整数),但我想使用'kind_code'(字符串)

我从未尝试过那样做。

  • 有可能吗?
  • 添加:foreign_key => "kind_id"是否足够?
  • kind_id怎么样? (我应该删除吗?)

非常感谢 的Alessandro

1 个答案:

答案 0 :(得分:0)

我不建议你这样做。如果您只是因为URL重写而需要它,您还可以重新声明模型中的to_param方法,如下所示:

def to_param
    "#{id}-#{kind_code}"
end

无论如何,可以像你说的那样使用替代foreign_key,但仅使用foreign_key是不够的。您还需要像这样添加primary_key参数。

belongs_to :kind, :foreign_key => 'kind_code', :foreign_key => 'code'

您可以在文档中找到其他示例,只需搜索“foreign_key”=&gt; http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html