0
class Campaign < ActiveRecord::Base
  has_many :posts
  has_many :users
end

class Post < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :campaign
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :posts, :join_table => "users_posts"
  belongs_to :campaign
end

ユーザーがこの投稿を見た場合、私は彼を post.users に追加します。ユーザー キャンペーンの最初の未視聴の投稿を見つける必要があります。次のようにします。

current_user.campaign.posts.where('posts.users not include current_user')
4

1 に答える 1

0

よしじさん、どうもありがとう!あなたは私について覚えていますinclude。試す前に、インスタンスメソッドで問題を解決joinしたため、nilで機能しませんでした:INNER JOIN

  def unwatched_post
    campaign.posts.includes(:users).where('users.id != ? OR users.id IS NULL', self.id).first
  end
于 2012-11-08T16:46:33.880 に答える