1

到目前为止,我正试图以有限的成功形成正确的查询。

假设我有用户和帖子

用户 has_many 帖子和帖子属于用户

帖子有一个可见的布尔字段

我正在尝试在用户模型中编写一个范围,该范围会遍历所有用户,找到他们的最后一篇文章,并且仅在其最后一篇文章中可见布尔值为 true 的情况下才返回用户。

类似于 Users.posts.last.where(:visible => true) 的东西,但在一个范围内。

编辑

我试图将返回值保留为 AR 关系对象,常规数组不适用于我试图使用范围的内容。到目前为止,感谢您的输入。

4

2 回答 2

0
class User < ActiveRecord::Base 
  has_many :posts
  scope :last_visable_post, posts.where("visible = ?",true).last
end
于 2012-05-02T18:35:08.883 回答
0

也许这样的东西应该可以工作..(未经测试)

class User

  def User.users_with_visible_posts
    User.includes(:posts).map {|user| user.posts.last && !!user.posts.last.visible}
  end
end

User.users_with_visible_posts #=> [Users with last post visible]
于 2012-05-02T18:31:44.323 回答