0

我使用has_many :through由具有三種模式的關係:HAS_MANY:通過關聯

class Curriculum class < ActiveRecord::Base 

    has_many :interests 
    has_many :vacancies,: through => :interests 
end 

class Vacancy class < ActiveRecord::Base 

    has_many :interests 
    has_many :resumes,: through => :interests 
end 

class Interest < ActiveRecord:: Base 

    belongs_to :vacancy 
    belongs_to :curriculum 
end 

並創建課程和空缺,我通過行政創建它們,我需要知道我怎樣才能創建感興趣空缺的ID,以及如何登錄系統,我必須得到它的ID,並建立新的銀行利益關係。我想知道如何編程來做到這一點,我想知道控制器將如何獲得創建操作,以及有什麼更好的方法來做到這一點。

+0

我忘了上面的評論,但我是新的紅寶石軌道上,請不要考慮一些錯誤。 – 2011-12-14 17:20:32

回答

0

首先,嘗試閱讀整個"Guide to Rails on Associations",特別是關於has_many :through的部分。然後檢查您的模式,如果您的數據庫已遷移並且包含interests表所需的外鍵爲curriculumsvacancies,請調用curriculum_idvacancy_id

如果全部到位,下面的代碼將創建關係的兩個物體之間:

@curr = Curriculum.find(1) 
@vac = Vacancy.find(1) 
@curr.interests << @vac 
@curr.save 

最後兩行創建@curr@vac並存儲在數據庫之間的利益。所以你不應該使用ID並直接處理它們,而是使用對象來代替。

第二部分現在提供一個界面,允許在課程和空缺之間定義(和刪除)興趣。這裏的基本流程如下:

  • 你有一個課程重點。
  • 你有一個鏈接添加/刪除課程。
  • 打開的視圖顯示可能的空缺列表,每個空缺都有一個複選框。
  • 通過選擇(或取消選中)複選框,空位的ID將保存在發送給控制器的請求參數中。

查看(舊的)播客Railscast #52如何在類似的情況下做到這一點。或者請參閱has_many :through with checkboxes的示例。

另一種方法是使用JQuery自動完成,並逐個添加興趣點。查看使用JQuery Tokeninput的漂亮播客Railscast #258

+0

我該如何製作一個按鈕來點擊它以產生新的興趣? – 2011-12-16 19:24:01

0

我覺得這是你找什麼:

HABTM Checkboxes

這是使用一個的最佳方式有屬於許多關聯。