我有三个模型:Homework
,Question
和HomeworkAttempt
。
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
我想进行设置,以便用户可以根据作业创建新的作业尝试。我该怎么做呢?我的模型中需要哪些列?
谢谢!
答案 0 :(得分:0)
我无法确切地说出你在问什么,但我有一些想法可能会帮助你开始:
在您的关系中,您似乎正在尝试使用您从未创建过的模型。例如,belongs_to :group
和has_many :answer_attempts
都暗示这些模型存在,但您没有在其他任何地方提及它们。如果要使用这些关系,则必须创建这些模型。
此外,您似乎在new
行动中做了太多工作。第四行通常是这样一个行动所需要的所有内容,但是如果没有更详细地说明你想要完成什么,就很难说清楚。
你需要的不仅仅是你在这里展示的所有功能。你真的应该有一个控制器来管理你的每个模型的CRUD,除非你有一些我没有看到的其他计划。如果您提供有关您目前拥有的内容以及您想要获得的内容的更多信息,我可以编辑我的答案以尝试提供更多帮助。