我一直在玩弄寫一個回報率4.2應用程序,將允許下列行爲:如何爲會議註冊應用程序設置我的模型關聯?
- 管理員用戶創建的會議課程列表將包括題目,說明等
- 會議的與會者可以在網站註冊,然後選擇他們想參加的會議課程。
- 與會者不應該能夠創建會議課程,只能從數據庫中列出的課程列表中選擇並選擇他們參加。這必須是一種將許多用戶關聯到同一課程的方法。
- 當用戶選擇一個課程,則該過程中的座位容量應遞減(該溶液的這一方面的細節在當時的二次要求)
爲了討論起見,讓我們說我正在使用Devise和用戶角色,都已經想清楚和配置。所以我有一個user.rb模型/表。 我還創建了一個名爲course.rb的模型/表。 我創建了一個名爲course_selection.rb的連接模型/表。
我通過協會配置使用的has_many這些表與連接表屬於每個像這樣:
class User < ActiveRecord::Base
has_many :course_selections
has_many :courses, :through => :course_selections
end
class Course < ActiveRecord::Base
has_many :course_selections
has_many :users, :through => :course_selections
end
class CourseSelection < ActiveRecord::Base
belongs_to :user
belongs_to :course
end
我有這樣的設置和我能夠創建新用戶,但與非管理員用戶角色能夠創建課程(但我沒有爲這些用戶設置任何種類的基於角色的排除,以防止他們創建課程)。當我調用RESTful路線時,例如 http://localhost:3000/users/3/courses 我期待只看到與此特定用戶關聯的課程列表。相反,我看到數據庫中列出的所有課程。
我的問題是:
- 我能所選擇的模型關聯的策略來完成我指定的行爲目標是什麼?
- 如何設置控制器以便建立用戶的課程選擇,但他們沒有使用新的/創建方法來實際創建課程?
- 如何設置表單(我正在使用simple_form)以允許用戶從現有課程列表中進行選擇?
感謝您的幫助。我還沒有找到任何似乎解決這個挑戰的教程。
謝謝。這很有道理!我會試試這個,讓你知道我是怎麼做的。 –
這些信息提供了我的問題的答案。非常感激! –