我对Rails 3.2上的Ruby 1.9.3还不太熟悉,我正在进行个人项目学习这是一个非常基本的多项选择琐事游戏,我很难在控制器和视图中编写代码,使用户可以单击“播放”链接,该链接将随机显示问题和问题选择。然后,用户应选择四个单选按钮中的一个,对应于四个问题选项中的一个。问题和问题选择被添加到用户答案表中,然后显示下一个问题另外,我不希望用户看到同样的问题两次。
以下是我的模特:
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_many :questions
has_many :question_choices
has_many :user_answers, dependent: :destroy
end
class Question < ActiveRecord::Base
attr_accessible :level, :question, :is_active
has_many :user_answers, through: :question_choices
has_many :question_choices, dependent: :destroy
end
class QuestionChoice < ActiveRecord::Base
attr_accessible :choice, :is_correct, :question_id
has_many :user_answers, dependent: :destroy
belongs_to :question
end
class UserAnswer < ActiveRecord::Base
attr_accessible :answer_time, :user_id, :question_choice_id, :question_id
belongs_to :user
belongs_to :question
belongs_to :question_choice
end
我的路线:
Trivia::Application.routes.draw do
root to: 'static_pages#home'
resources :sessions, only: [:new, :create, :destroy]
resources :questions do
resources :question_choices
end
resources :users
resources :user_answers
end
我已经能够分别使用“索引”、“新建”、“编辑”和“显示”的脚手架,但是我很难将它们组合在一起,这样用户就可以看到一个问题,然后选择一个问题,他们的用户答案就会更新。
任何帮助都将不胜感激。
谢谢您。
夏恩
最佳答案
我觉得你的数据模型有点复杂让我们看看要求
我们有三个对象:用户、问题和答案(问题选择)。
我们知道这些物体之间的一些关系:
一个问题有多种答案
用户将回答多个问题
一个问题将由多个用户回答
用户只应回答一次问题
数字1是一个简单的关系,问题有很多选择:
class Question < ActiveRecord::Base
attr_accessible :level, :question, :is_active
has_many :question_choices, dependent: :destroy
end
数字2与用户模型有关,这非常简单:
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_many :user_answers, :dependent => :destroy
end
好的,现在是用户回答它的工作是将问题选择与用户联系起来:
class UserAnswer < ActiveRecord::Base
attr_accessible :answer_time, :user_id, :question_choice_id, question_id
belongs_to :user
belongs_to :question
belongs_to :question_choice
validates :question_id, uniqueness: { :scope => :user_id }
end
这个验证是对第四个问题的答案它说“如果您根据用户将所有用户的答案组合在一起,每个问题只应出现一次”。因此,如果用户尝试回答一个问题两次,它将拒绝在数据库中创建此项。
第三点并不是一个真正的要求,但是你需要确保你的数据模型能够控制我们没有什么能阻止这一切。
关于ruby-on-rails - Trivia游戏的 Controller 和查看代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17334340/