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

发布于 2024-11-05 16:51:12 字数 506 浏览 2 评论 0原文

我正在尝试链接 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(#...)预期 ,得到 String(#...)

I'm trying to link two tables on a SHA1 rather than doing a find for the SHA1 across tables, and linking the via id.

My models are

class Dataset < ActiveRecord::Base
   belongs_to :dataset_hash
end

class DatasetHash < ActiveRecord::Base
   has_many :datasets
end

I tried linking using

  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}'

but I just get an error of

DatasetHash(#...) expected, got String(#...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七堇年 2024-11-12 16:51:12

您可以使用 belongs_tohas_many

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

You can use :foreign_key and :primary_key available in belongs_to and has_many:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文