需要RoR模型关系建议

时间:2010-11-23 08:02:00

标签: ruby-on-rails model foreign-key-relationship relationship

我有3个模型类别,问题和测验以及5个表类别,问题,测验,category_quizzes和questions_quizzes。

测验有很多问题,可能属于零个或多个类别。此问题可能属于许多测验

有些机构可以建议应该如何建立模型之间的关系

表模式如下

CREATE TABLE categories (
  id int(11) unsigned NOT NULL auto_increment,
  title varchar(255) NOT NULL,
  PRIMARY KEY  (id),
);

CREATE TABLE category_quizzes (
  id int(11) unsigned NOT NULL auto_increment,
  category_id int(11) unsigned NOT NULL,
  quiz_id int(11) unsigned NOT NULL,
  PRIMARY KEY  (id),
  KEY category_id (category_id,quiz_id),
  KEY quiz_id (quiz_id)
);

CREATE TABLE questions (
  id int(11) unsigned NOT NULL auto_increment,
  question varchar(255) NOT NULL,
  answer varchar(255) NOT NULL,
  PRIMARY KEY  (id),
);

CREATE TABLE questions_quizzes (
  id int(11) unsigned NOT NULL auto_increment,
  quiz_id int(11) unsigned NOT NULL,
  question_id int(11) unsigned NOT NULL,
  PRIMARY KEY  (id),
  KEY quiz_id (quiz_id,question_id),
  KEY question_id (question_id)
);

CREATE TABLE quizzes (
  id int(11) unsigned NOT NULL auto_increment,
  title varchar(255) NOT NULL,
  PRIMARY KEY  (id),
);

我目前的模特课程

class Category < ActiveRecord::Base
    has_and_belongs_to_many :quiz
end

class Question < ActiveRecord::Base
    has_and_belongs_to_many :quiz
end

class Quiz < ActiveRecord::Base
  has_many   :questions
  has_and_belongs_to_many :categories
end

1 个答案:

答案 0 :(得分:0)

表category_quizzes的迁移不正确。它应该是categories_quizzes,都是复数形式。

然后你可以指定这样的关联:

class Category < ActiveRecord::Base
  has_and_belongs_to_many :quizzes
end

class Question < ActiveRecord::Base
  has_and_belongs_to_many :quizzes
end

class Quiz < ActiveRecord::Base
  has_and_belongs_to_many :questions
  has_and_belongs_to_many :categories
end

编辑:根据您的评论更改关联