如何在表之间提供多个多对多的关系?

时间:2015-12-25 13:23:27

标签: ruby-on-rails ruby ruby-on-rails-4

已解决请在问题的最后和我的回答中阅读更多内容。

我的问题是user,assessment,question,answer with user_answer

之间的关系

我定义的关系

  • 一个评估有很多问题
  • 一个问题has_many answers

我的方案文件

create_table "assessments", force: :cascade do |t|
    t.string   "name"
    t.text     "description"
end

create_table "answers", force: :cascade do |t|
    t.integer  "question_id"
    t.string   "answer_label"
    t.integer  "answer_value"
end

create_table "questions", force: :cascade do |t|
    t.integer  "assessment_id"
    t.text     "effective_text"
    t.text     "ineffective_text"
end

 create_table "users", force: :cascade do |t|
    t.string   "email"
    t.string   "encrypted_password"
 end

create_table "user_answers", force: :cascade do |t|
    t.integer  "assessment_id"
    t.integer  "question_id"
    t.integer  "answer_id"
    t.integer  "user_id"
end

帮助我,如果可以的话

由于

1 个答案:

答案 0 :(得分:1)

让我逐一回答你的问题

  

我想知道user和user_answer之间的关系是什么

toMatEducation(clone $education, ...)
  

评估和user_answer之间的关系是什么?

class User < ActiveRecord::Base
  has_many :answers, through: user_answers
  has_many :assessment, through: user_answers
end

class UserAnswer < ActiveRecord::Base
  belongs_to :answer
  belongs_to :user
  belongs_to :assessment
end

我强烈建议您宣读Stackoverflow- Can a foreign key be NULL and/or duplicate?

希望这能帮到你!!!