Rails Association关于"帮助"表

时间:2017-11-16 15:41:39

标签: ruby-on-rails

我正在重写旧的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

1 个答案:

答案 0 :(得分:1)

您可以指定要用作关联的primary_keyforeign_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表格。