我正在开展一个项目,我需要在一个部分的末尾测试用户。使用嵌套模型表单我希望users
能够选择answers
并存储这些表单。我正在尝试为自己构建它以改进并且可以使用来自更有经验的开发人员的建议来解决这个问题。
我假设通过关系这是多对多的,我需要一个连接表,但我不清楚如何表现它以允许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 :(得分: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。也许从设置测试和答案开始,然后继续选择答案。