Ruby on rails 3.1 Rails 3:如何使用相关对象上的方法?
我正在用Rails 3.1更新一个站点并添加一些功能。此应用程序跟踪网站集合的测试。最初,我将每个测试的分数存储为测试表中的一列,但现在我创建了一个名为Reviews的新模型,用于保存每个测试的分数和注释的历史记录。模型如下所示: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
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:。包括一些关联和联接的示例李>
属于: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