I think you can say this better by using array difference:

~~~ ruby
campsites.select! do |campsite|
  (campsite.amenity_ids - amenity_ids).empty?
end
~~~

Or, if that's not clear enough:

~~~ ruby
campsites.select! do |campsite|
  campsite.amenity_ids.all? {|id| amenity_ids.include?(id) }
end
~~~