Rails3范围与has_many关联

时间:2010-12-10 18:35:09

标签: ruby-on-rails ruby-on-rails-3 scope has-many

我有两个模型,与has_many相关联。

class User < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :user
end

用于创建评论表的迁移文件如下:

class CreateComments < ActiveRecord::Migration
  def self.up
    create_table :comments do |t|
      t.string :body
      t.boolean :important, :default => false
      t.references :user

      t.timestamps
    end
  end
  ...

要列出将重要评论作为最新评论发布的用户,我尝试了:

scope :have_important, (joins(:comments) & Comment.order('created_at desc')).where('important = ?', true)

在user.rb上。但这包括发布重要评论的用户不是最新评论。我该如何定义该范围?

单元测试在这里:

test "Scoped user's latest comment should be important" do
  User.have_important.each do |user|
    assert_equal user.comments.last.important, true
  end
end

1 个答案:

答案 0 :(得分:1)

名称“have_important”并不意味着最新。也许你想要的是两个不同的范围,一个用于重要,一个用于最近。然后链接他们。