ActiveRecord协会等级应用程序

时间:2013-06-10 17:15:40

标签: ruby-on-rails database database-design activerecord associations

有点难以用标题来解释。

我正在使用Ruby on Rails制作测试成绩应用程序,并且无法找出最佳的ActiveRecord Association设置。

理想情况:有很多用户,并且有很多测试。我需要存储每个测试的每个用户的分数。现在我有这个:

class User < ActiveRecord::Base
  has_many :tests
  has_many :scores, :through => :tests
end

class Test < ActiveRecord::Base
  has_many :scores
end

class Scores < ActiveRecord::Base
  belongs_to :users
  belongs_to :tests
end

虽然看起来不对。我想知道这个的惯例。感谢。

1 个答案:

答案 0 :(得分:1)

我会使用三个表/模型:

  1. test
  2. user(或者,可能更好,student
  3. test_result,拥有test_iduser_idscore
  4. 对应的Ruby代码:

    class User < ActiveRecord::Base
      has_many :tests, through: :test_results
    end
    
    class Test < ActiveRecord::Base
      has_many :users, through: :test_results
    end
    
    class TestResult < ActiveRecord::Base
      belongs_to :test
      belongs_to :user
    end