在Rails中通过关系的Has_many的形式和路由4

时间:2014-03-02 20:39:03

标签: ruby-on-rails ruby-on-rails-4

我是一个Rails新手,并试图创建一个简单的Rails4应用程序。我有用户模型,由Devise GEM生成,考试模型和参与模型都是由脚手架生成器生成的。

这些是我的模特:

class Examination < ActiveRecord::Base
  has_many :participations
  has_many :users, :through => :participations
end

class Participation < ActiveRecord::Base
  belongs_to :user
  belongs_to :examination
end

class User < ActiveRecord::Base
  has_many :participations
  has_many :examinations, :through => :participations
end

和数据库结构:

  create_table "participations", force: true do |t|
    t.integer  "user_id"
    t.integer  "examination_id"
    t.string   "exam_language_preference"
    ....
  end

  create_table "users", force: true do |t|
    t.string   "email"
    t.string   "first_name"
    ....
  end

  create_table "examinations", force: true do |t|
    t.string   "name"
    t.string   "shortname"
    t.datetime "exam_date"
  end

现在,我想创建一个结构,使用户能够注册考试。在Examinations的索引页面(app / views / examinations / index.html.erb)我想在每个考试的默认Show,Edit和Destroy按钮旁边添加一个“Register”按钮。当用户点击“注册”按钮时,我希望他们看到一个页面,他们可以选择他们的考试语言偏好并提交他们的注册。

此外,我希望用户只能注册一次考试。我的意思是他们可以报名参加许多考试,但每次考试只有一次。

我阅读了整个Rails指南但找不到正确的答案。

我该怎么办这种申请?

1 个答案:

答案 0 :(得分:0)

好吧,你不会在rails指南中找到你特定问题的答案。 :)

我建议你阅读更多内容:

  • 使用范围选项
  • 验证属性的唯一性
  • 嵌套资源