Ruby on rails 3.1 Rails 3:如何使用相关对象上的方法?

Ruby on rails 3.1 Rails 3:如何使用相关对象上的方法?,ruby-on-rails-3.1,has-many-through,Ruby On Rails 3.1,Has Many Through,我正在用Rails 3.1更新一个站点并添加一些功能。此应用程序跟踪网站集合的测试。最初,我将每个测试的分数存储为测试表中的一列,但现在我创建了一个名为Reviews的新模型,用于保存每个测试的分数和注释的历史记录。模型如下所示: class Site < ActiveRecord::Base has_many :tests has_many :reviews, :through => :tests class Test < ActiveRecord::Base

我正在用Rails 3.1更新一个站点并添加一些功能。此应用程序跟踪网站集合的测试。最初,我将每个测试的分数存储为测试表中的一列,但现在我创建了一个名为Reviews的新模型,用于保存每个测试的分数和注释的历史记录。模型如下所示:

class Site < ActiveRecord::Base
  has_many :tests
  has_many :reviews, :through => :tests

class Test < ActiveRecord::Base
  has_many :reviews
  belongs_to :site

class Review < ActiveRecord::Base
  belongs_to :test
  has_one :user
由于等级现在不在测试模型中,我创建了此方法来访问每个测试的最新等级:

def last_grade
  return reviews.find(:last).grade
end
这对于在测试视图中显示最新的等级很好,但是如何在站点级别使用它呢?由于该值现在位于一个未存储在数据库中的方法中,因此我不知道如何使用它,在主要的在线教程/屏幕广播网站上也找不到与此相关的任何内容


提前感谢您的帮助

joins方法允许通过关联的属性访问的多个属性。或者从所需的关联开始,并包含所需的联接

  tests.joins(:reviews).where("reviews.grade = 5").count

  reviews.where("grade = 5").count
资料来源:

  • 第11节连接表处的活动记录查询接口
  • 铁路乘客181:。所述的一些方法已经改变;退房
  • 铁路乘客215:。包括一些关联和联接的示例
在Ruby这个喜欢测试的世界里,一个名为test的类在自找麻烦。我甚至无法在Rails控制台中创建测试。您没有提到任何有关用户的内容,但我怀疑Review
属于:User
而不是
有一个:User
。这篇文章给了我很多帮助:方法更加灵活,但对于一个简单的例子,您可以向has_many:
has_many:a_grades,:through=>:tests,:source=>:reviews,:conditions=>{:grade=>5}
  tests.joins(:reviews).where("reviews.grade = 5").count

  reviews.where("grade = 5").count