2015-08-09 85 views
0

我正在开发一个项目,我将在一节的结尾处测试用户。使用嵌套模型表格我希望users能够选择answers并将其存储。我正在努力为自己完善自己,并且可以使用来自更有经验的开发人员的建议,以便如何最好地实现这一目标。Rails 4:使用嵌套模型表单保存用户选择

我认为这是多对多的关系,我需要一个加入表格,但我不清楚如何表面允许users选择他们的answers。我需要为这个新的加入表创建一个控制器还是我误解了这种情况下的ActiveRecord

我的模型是:如何最好地实现我的目标

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

class Test < ActiveRecord::Base 
    has_many :questions, :dependent => :destroy 
    accepts_nested_attributes_for :questions 
end 

class Question < ActiveRecord::Base 
    belongs_to :test 
    has_many :answers, :dependent => :destroy 
    accepts_nested_attributes_for :answers 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
end 

任何有识之士/建议将非常感激。

+0

观看关于'nested-forms'的视频http://railscasts.com/episodes/196-nested-model-form-part-1 – Emu

回答

1

您可以尝试不同的解决方案。一种方法是通过问题建立测试和答案之间的关联。

user.rb

class User < ActiveRecord::Base 
    has_one :test 
end 

test.rb

class Test < ActiveRecord::Base 
    belongs_to :user 
    has_many :answers, dependent: :destroy 
    has_many :questions, through: :answers 

    accepts_nested_attributes_for :answers, allow_destroy: true 
end 

question.rb

class Question < ActiveRecord::Base 
    has_many :answers, dependent: :destroy 
end 

answer.rb

class Answer < ActiveRecord::Base 
    belongs_to :test 
    belongs_to :question 
end 

至于允许用户选择答案,您可能需要设置单独的关联,以便通过selected_answers获得许多selected_answers和许多possible_answers的答案。也许从设置测试和答案开始,然后继续选择答案。

+0

感谢您的快速回放Margo。我会试一试,让你知道它是如何发展的。从一个累人的赞赏:) – Ryan

相关问题