Rails通过SHA1而不是id进行关联

时间:2011-05-04 17:05:13

标签: ruby-on-rails associations sha1

我正在尝试链接SHA1上的两个表,而不是跨表执行SHA1的查找,并链接via id。

我的模特

class Dataset < ActiveRecord::Base
   belongs_to :dataset_hash
end

class DatasetHash < ActiveRecord::Base
   has_many :datasets
end

我尝试使用

进行链接
  has_many :datasets, :finder_sql => 'Select datasets.* FROM datasets LEFT JOIN dataset_hashes ON datasets.dataset_hash=dataset_hashes.hash WHERE dataset_hashes.hash=#{dataset.dataset_hash}'

但是我得到错误

DatasetHash(#...)期望,得到字符串(#...)

1 个答案:

答案 0 :(得分:2)

您可以使用belongs_tohas_many中提供的:foreign_key:primary_key

class Dataset < ActiveRecord::Base
   belongs_to :dataset_hash, :primary_key => "dataset_hash", :foreign_key => "hash"
end

class DatasetHash < ActiveRecord::Base
   has_many :datasets, :primary_key => "hash", :foreign_key => "dataset_hash"
end