我正在ruby / rails中设计一个词汇测验应用程序。 我有基本的模型/关联设置,但我担心可伸缩性。 应用程序中将有一定数量的单词。为简单起见,我们说100。 用户将能够进行问题,该问题将通过查看他们之前遇到的问题而生成。这个问题将为定义提供一个词和4个选择(一个是定义,另外三个是随机选择)。
以下是我目前设置模型和关联的方式;
class User < ActiveRecord::Base
has_many :user_questions
end
class UserQuestion < ActiveRecord::Base
belongs_to :user
belongs_to :vocab_word
end
class VocabWord < ActiveRecord::base
has_many :user_question
end
假设我要保留这个基本模型,我应该使用以下哪种方法?
这些方法中的任何一种都可以扩展吗?如果应用程序有一百万用户,则第一个策略在user_questions中将有1亿行。第二个可能远不止于此。
答案 0 :(得分:2)
你快到了。我建议使用以下内容扩展您的模型,以及对UserQuestion和User association的轻微更正。
class User < ActiveRecord::Base
has_and_belongs_to_many :user_questions
end
class UserQuestion < ActiveRecord::Base
has_and_belongs_to_many :users
belongs_to :vocab_word
end
class VocabWord < ActiveRecord::base
has_many :user_question
end
class Attempt < ActiveRecord::base
belongs_to :vocab_word
belongs_to :user
belongs_to :user_question
attr_accessible :result
end
您需要user_questions_users关联表才能在问题和用户之间建立多对多关联。我相信它可以扩展。确保正确设置索引。