Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 等级应用程序的ActiveRecord关联_Ruby On Rails_Database_Database Design_Activerecord_Associations - Fatal编程技术网

Ruby on rails 等级应用程序的ActiveRecord关联

Ruby on rails 等级应用程序的ActiveRecord关联,ruby-on-rails,database,database-design,activerecord,associations,Ruby On Rails,Database,Database Design,Activerecord,Associations,标题有点难解释 我正在用Ruby on Rails制作一个测试等级的应用程序,但我想不出最好的ActiveRecord关联设置 理想情况下:有很多用户,并且有很多测试。我需要存储每个用户每次测试的分数。现在我有这个: class User < ActiveRecord::Base has_many :tests has_many :scores, :through => :tests end class Test < ActiveRecord::Base has_

标题有点难解释

我正在用Ruby on Rails制作一个测试等级的应用程序,但我想不出最好的ActiveRecord关联设置

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

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
class用户:测试
结束
类测试

但这似乎并不正确。我想知道这方面的惯例。谢谢。

我将使用三种表格/型号:

  • 测试
  • 用户
    (或者更好的是,
    学生
  • 测试结果
    ,具有
    测试id
    用户id
    分数
  • 对应的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
    
    class用户
    所以它的测试结果应该属于测试和用户?它是通过
    测试结果
    ,而不是反过来,因为
    测试结果
    是连接
    测试
    用户的东西。这样想吧:我和任何一个考试有关系的唯一原因就是因为我参加了那个考试。如果我参加美国总统考试和内战考试,
    jason.tests
    将返回这两个考试,而不是三角测试,因为我没有参加。希望这种思维方式能把问题弄清楚。顺便说一句,我认为这确实是一个数据库设计问题,Rails的ActiveRecord放在表的顶部这一事实是一个附带的细节。我不是在批评这个问题;我只是觉得指出这一点会很有趣。