我正在重写旧的PHP应用程序,必须迁移数据库。 它有一个连接 table harddisks_imagecapturing:
id manuscripts_id harddisk_id
-------------------------------
1 206 18
2 206 17
3 206 16
表imagecapturing:
id harddisk_id library signature
-------------------------------
1 16 "foo" "MS352"
2 17 "bar" "AB67"
3 18 "baz" "WQ62"
表硬盘:
id harddisk_name capacity
-------------------------------
16 "Seagate" 2000
17 "Seagate" 2000
18 "Seagate" 4000
问题是,我没有在表格中找到一个manuscript_id而是一个独特的签名,可以用作"帮助表"参考手稿表。
表格手稿:
id signature
---------------
206 "MS352"
如何正确使用Rails关联将数据检索到包含以下列的表中:
签名,库,harddisk_name,容量
?我想必须使用harddisks_imagecapturing表中的manuscript_id来从稿件表中获取签名。
class Imagecapturing < ApplicationRecord
self.table_name = 'imagecapturing'
belongs_to :harddisk
end
class HarddisksImagecapturing < ApplicationRecord
self.table_name = 'harddisks_imagecapturing'
belongs_to :harddisk
belongs_to :imagecapturing
end
class Harddisk < ApplicationRecord
has_many :manuscripts_harddisks
has_many :manuscripts, through: :manuscripts_harddisks
default_scope { order(kaufdatum: :desc) }
# Harddisk.order('id ASC').reorder('kaufdatum DESC')
end
class Manuscript < ApplicationRecord
end
答案 0 :(得分:1)
您可以指定要用作关联的primary_key
和foreign_key
的列。 http://guides.rubyonrails.org/association_basics.html#options-for-belongs-to
class Manuscript < ApplicationRecord
belongs_to :imagecapturing, foreign_key: "signature", primary_key: "signature"
end
或者,就像您提到的那样,您也可以浏览harddisks_imagecapturing
表格。