我有以下模型,並且想要獲得特定用戶沒有在他們身上放置的所有可用帖子。優化ActiveRecord查詢
郵政型號:
class Post < ActiveRecord::Base
has_many :likes
has_many :users, through: :likes
scope :available, -> { where available: true }
end
就像型號:
class Like < ActiveRecord::Base
belongs_to :post
belongs_to :user
end
用戶模型:
class User < ActiveRecord::Base
has_many :likes
has_many :posts, through: :likes
end
我想出了這樣的ActiveRecord查詢:
Post.available - Post.available.joins(:likes).where('likes.user_id = ?', user.id)
有沒有一種優化的方式來實現這一目標?也許甚至是一個等效的SQL查詢?
使Post.available.joins(:likes).where('likes.user_id =?',user.id)'作用域的範圍減去 –