Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails邀请/注册_Ruby On Rails_Ruby_Invitation - Fatal编程技术网

Ruby on rails RubyonRails邀请/注册

Ruby on rails RubyonRails邀请/注册,ruby-on-rails,ruby,invitation,Ruby On Rails,Ruby,Invitation,我目前正在构建一个应用程序,其中一部分是邀请/注册系统。目前,该系统中有“课程”和“教室”。因此,“课程”是某种课程,“教室”是一门课程的具体实例。F.ex。可能有1门课程,但该课程有3个课堂实例,具有不同的开始/结束日期、稍微不同的/更新的材料等。现在,可以邀请“员工”参加“课程”,但“员工”自己必须选择一个特定的“课堂”进行注册。因此,员工进入他/她的个人资料页面,在那里会显示邀请。现在,员工单击一个邀请,然后可以选择一个特定的教室进行注册。这显然应该创建一个注册。但是,它也应该摆脱邀请,因

我目前正在构建一个应用程序,其中一部分是邀请/注册系统。目前,该系统中有“课程”和“教室”。因此,“课程”是某种课程,“教室”是一门课程的具体实例。F.ex。可能有1门课程,但该课程有3个课堂实例,具有不同的开始/结束日期、稍微不同的/更新的材料等。现在,可以邀请“员工”参加“课程”,但“员工”自己必须选择一个特定的“课堂”进行注册。因此,员工进入他/她的个人资料页面,在那里会显示邀请。现在,员工单击一个邀请,然后可以选择一个特定的教室进行注册。这显然应该创建一个注册。但是,它也应该摆脱邀请,因为它已经被“接受”。目前,我已经将其设置为“员工”通过“注册”拥有许多“教室”。此外,“员工”通过“邀请”有许多“课程”。但这似乎并不正确,因为当员工单击某些邀请时,他们将被带到一个注册页面(注册控制器),在那里将创建注册。创建注册后,应删除邀请。所以现在我想注册控制器应该能够创建注册和删除邀请。这似乎是个糟糕的设计。我对教室和员工之间的关系很满意,但员工和邀请函之间的关系似乎很糟糕。你会怎么做

为什么不在模型中简单地使用
status
属性来管理邀请过程

我将使用以下模型:

  • 员工
    ,应用程序的用户
  • 课程
    ,要遵循的课程
  • 教室
    ,属于
    课程
    (有多个
    教室的课程
  • 参与
    ,在员工、课程和课堂之间建立联系。此模式的状态取决于课程参与的演变:
    受邀
    当员工被邀请时,
    已注册
    当员工选择教室时,等等
  • 参与
    模式的框架是:

     class Participation < ActiveRecord::Base
       attr_accessible :status
    
       belongs_to :employee
       belongs_to :course
       belongs_to :classroom
       #...
    
       validates_uniqueness_of :employee_id, :scope => [course_id, :classroom_id]
     end
    
    在邀请时,将创建参与实例(状态
    已邀请
    ),相应的
    员工id
    课程id
    教室id
    保留为空。注册时,将使用
    教室id
    和状态
    已注册
    更新参与情况


    它是否符合您的需要?

    一个简单的解决方案是在邀请模型中添加一个
    接受的
    布尔字段。选择教室/课程后,将
    accepted
    设置为true。然后在配置文件页面上,仅显示
    accepted
    为false的邀请

     add_index :participation, [employee_id, course_id, classroom_id], unique => true