控制器设置有三种型号?

时间:2011-06-15 21:12:54

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

我有三个模型:HomeworkQuestionHomeworkAttempt

homework.rb

class Homework < ActiveRecord::Base
  belongs_to :group
  has_many :questions
  has_many :homework_attempts
end

question.rb

class Question < ActiveRecord::Base
  belongs_to :homework
end

homework_attempt.rb

class HomeworkAttempt < ActiveRecord::Base
  belongs_to :homework
  belongs_to :student
  has_many :answer_attempts
end

我设置了两个控制器,认为这是最好的方法。我的作业控制器是空的,只是为了嵌套homework_attempt而存在。我的作业尝试控制器看起来像这样:

class HomeworkAttemptsController < ApplicationController
  def new
    @group = Group.find(params[:group_id])
    @homework = Homework.find(params[:homework_id])
    @questions = @homework.questions
    @homework_attempt = HomeworkAttempt.new
    current_user.homework_attempts << @homework_attempt
    @title = @homework.name
  end
  ...
end

我想进行设置,以便用户可以根据作业创建新的作业尝试。我该怎么做呢?我的模型中需要哪些列?

谢谢!

1 个答案:

答案 0 :(得分:0)

我无法确切地说出你在问什么,但我有一些想法可能会帮助你开始:

在您的关系中,您似乎正在尝试使用您从未创建过的模型。例如,belongs_to :grouphas_many :answer_attempts都暗示这些模型存在,但您没有在其他任何地方提及它们。如果要使用这些关系,则必须创建这些模型。

此外,您似乎在new行动中做了太多工作。第四行通常是这样一个行动所需要的所有内容,但是如果没有更详细地说明你想要完成什么,就很难说清楚。

你需要的不仅仅是你在这里展示的所有功能。你真的应该有一个控制器来管理你的每个模型的CRUD,除非你有一些我没有看到的其他计划。如果您提供有关您目前拥有的内容以及您想要获得的内容的更多信息,我可以编辑我的答案以尝试提供更多帮助。