我有两个模型,与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
答案 0 :(得分:1)
名称“have_important”并不意味着最新。也许你想要的是两个不同的范围,一个用于重要,一个用于最近。然后链接他们。