首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails协会挑战赛

Rails协会挑战赛
EN

Stack Overflow用户
提问于 2012-02-26 04:02:16
回答 1查看 82关注 0票数 0

遇到一些挑战时,需要跟踪员工所学的课程。这就是到目前为止我手头上的表格

代码语言:javascript
运行
复制
Course: course_id,name,category_of_course...#holds Course related details

Employee: employee_id, name...#holds Employee details

progress:course_id,employee_id, status ...#holds which course have been 
taken and by whom

在我的模型中,我有这样的关系:

代码语言:javascript
运行
复制
 Employee: has_many :courses

请告诉我如何在“选择”列表中填写员工尚未学习的课程(假设在注册课程后,该课程被标记为已学习)。我正在使用带有MySql的rails 3.0.9。谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-02-26 04:19:44

你需要定义

代码语言:javascript
运行
复制
belongs_to :employee
belongs_to :course

(在您的进度模型中)

然后,您可以定义

代码语言:javascript
运行
复制
#Employee
has_many :progresses
has_many :courses, :through => :progresses

#Course
has_many :progresses
has_many :employees, :through => :progresses

选择列表将为:

代码语言:javascript
运行
复制
= form_for @something do |f|
  = f.select :course_id, Course.all.select{|x| not @employee.courses.include?(x)}.collect{|x|[x.name,x.id]} #Ideally this logic should reside in the model.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9447568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档