1

これまでのところ、適切なクエリを作成しようとしていますが、成功は限られています。

ユーザーと投稿があるとします

ユーザーには has_many の投稿があり、投稿はユーザーに属しています

投稿には表示可能なブール値フィールドがあります

すべてのユーザーを通過し、最後の投稿を見つけ、最後の投稿で表示されているブール値が true の場合にのみユーザーを返すスコープをユーザー モデルに記述しようとしています。

Users.posts.last.where(:visible => true) のようなものですが、スコープとして。

編集

戻り値を AR リレーション オブジェクトとして保持しようとしています。スコープを使用しようとしている目的に対して、通常の配列は機能しません。これまでのところ、入力していただきありがとうございます。

4

2 に答える 2

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 に答える
0
class User < ActiveRecord::Base 
  has_many :posts
  scope :last_visable_post, posts.where("visible = ?",true).last
end
于 2012-05-02T18:35:08.883 に答える