簡體   English   中英

我需要為這些關聯添加哪些引用,foreign_key?

[英]What references, foreign_keys do I need to add for these associations?

我的Rails 4.2應用程序中有這些關聯。 我不明白如何在教師和課程之間設置適當的參考/ foreign_key。

到目前為止,講師和課程表都具有local_id(本地參考)。 Local是他們倆都屬於的培訓中心。

class Local < ActiveRecord::Base
  has_many :instructors
  has_many :courses
end

class Instructor < ActiveRecord::Base
  belongs_to :local
  has_many :courses, through: :locals
end

class Course < ActiveRecord::Base
  belongs_to :local
  has_many :instructors, through: :locals
end

是否在課程表中添加一個foreign_key? 像這樣:

add_foreign_key :courses, :instructors

我讀到一些有關在有許多對許多關聯時需要“聯接表”的信息,因為我們需要存儲許多ID。 我想本地就是這種情況。

還是我需要另一個表belongs_to :instructor, :coursebelongs_to :instructor, :course表(模型)?

這是我將其設置為最大靈活性的方式。

講師和課程

讓我們用我們稱為“ Employment的聯接模型建立多對多關系。

我們可以使用以下方法生成模型:

rails g model employment instructor:belongs_to course:belongs_to

這將給我們:

class Employment < ActiveRecord::Base
  belongs_to :instructor
  belongs_to :course
end

employments將具有instructor_id course_idcourse_id外鍵。 這使我們可以為課程分配任意數量的教練,反之亦然。

因此,讓我們使用聯接模型:

class Instructor < ActiveRecord::Base
  has_many :employments
  has_many :courses, through: :employments
end

class Course < ActiveRecord::Base
  has_many :employments
  has_many :instructors, through: :employments
end

場地與課程

我建議您重命名您的Local模型Venue因為它是舉辦課程或活動的地方的通用英語術語。 Locale很尷尬,因為它與Web應用程序中的一個單獨概念沖突,並可能導致名稱沖突。

而且我們可能應該將其設置為多對多,以說明現實生活中的復雜性。

再說一遍:

rails g model booking venue:belongs_to course:belongs_to

class Booking < ActiveRecord::Base
  belongs_to :venue
  belongs_to :course
end

bookings中將帶有venue_idcourse_id外鍵。

class Venue < ActiveRecord::Base # was Local
  has_many :bookings
  has_many :courses, through: :bookings
end

class Course < ActiveRecord::Base
  # ...
  has_many :bookings
  has_many :venues, through: :bookings
end

更多閱讀:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM