Настройка контроллера с тремя моделями? - PullRequest
1 голос
/ 16 июня 2011

У меня есть три модели: 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

Я хочу настроить его так, чтобы пользователь мог создать новую попытку домашней работы на основе домашней работы. Как мне это сделать? Какие столбцы мне понадобятся в моей модели?

Спасибо!

1 Ответ

0 голосов
/ 16 июня 2011

Я не могу точно сказать, что вы спрашиваете, но у меня есть несколько идей, которые могут помочь вам начать:

В ваших отношениях кажется, что вы пытаетесь использовать модели, которые вы никогда не создавали. Например, belongs_to :group и has_many :answer_attempts подразумевают, что эти модели существуют, но вы нигде не упоминали их. Если вы хотите использовать эти отношения, вы должны создать эти модели.

Кроме того, похоже, что вы выполняете слишком много работы в new действии. Четвертая строка - это обычно все, что нужно для такого действия, но трудно сказать без подробностей о том, что именно вы пытаетесь выполнить.

Вам понадобится гораздо больше, чем показано здесь, чтобы все это работало. Вы действительно должны иметь контроллер для управления CRUD для каждой из ваших моделей, если у вас нет другого плана, который я не вижу. Если вы предоставите больше информации о том, что у вас есть в настоящее время, и о том, что вы пытаетесь получить, я могу отредактировать свой ответ, чтобы попытаться помочь вам.

...