在Rails 4上使用字符串作为PK和FK

时间:2015-05-04 04:06:25

标签: ruby-on-rails database ruby-on-rails-4 activerecord

我正在尝试在我正在制作的小型爬虫上使用String作为主/外键。但是当我尝试使用关联方法时,我一直收到以下错误(例如:a.crawler_details - 其中a是一个名为Asin的对象):

RangeError: 8532503039 is out of range for ActiveRecord::Type::Integer with limit 4

记录示例:

#<Asin asin: "8532503039", title: "O Físico", image_url: nil, active: false, created_at: "2015-05-04 03:30:29", updated_at: "2015-05-04 03:30:36">

以下是详细信息:

2.1.2 :001 > Asin.new
 => #<Asin asin: nil, title: nil, image_url: nil, active: true, created_at: nil, updated_at: nil>

2.1.2 :002 > CrawlerDetail.new
 => #<CrawlerDetail id: nil, amazon_price: nil, feed_price: nil, first_place: nil, second_place: nil, third_place: nil, fp_price: nil, sp_price: nil, tp_price: nil, run: nil, created_at: nil, updated_at: nil>


class Asin < ActiveRecord::Base
    has_many :crawler_details, :foreign_key => 'id', :primary_key=> 'asin'

    self.primary_key = 'asin' 
    ...
end


class CrawlerDetail < ActiveRecord::Base
   has_one :asin, :foreign_key => 'asin', :primary_key => 'id'
end

我也尝试过belongs_to关系,但没有运气。这里有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为这不是关联错误,您是否在数据库表中定义了字段名称“asin”类型整数

它可能会有所帮助,请尝试将数据库表从类型整数更改为字符串。