Skip to content

Instantly share code, notes, and snippets.

@scambra
Created July 3, 2014 12:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scambra/59ee7c8db81c2bf87d09 to your computer and use it in GitHub Desktop.
Save scambra/59ee7c8db81c2bf87d09 to your computer and use it in GitHub Desktop.
habtm_with_where_includes
gem 'activerecord', '4.1.4'
require 'active_record'
require 'minitest/autorun'
require 'logger'
ActiveRecord::Base.establish_connection 'sqlite3:///:memory:'
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table "tasks", force: true do |t|
t.string "name"
end
create_table "servers" do |t|
t.string "name"
t.string "server_type"
end
create_table "servers_tasks", :id => false do |t|
t.references :task
t.references :server
end
end
class Task < ActiveRecord::Base
has_and_belongs_to_many :servers, lambda { where("servers.server_type = ?", 'main') }
end
class Server < ActiveRecord::Base
has_and_belongs_to_many :tasks
end
class BugTest < Minitest::Unit::TestCase
def test_includes
task = Task.create! name: "test"
server1 = Server.create! name: "main1", server_type: "main"
server2 = Server.create! name: "main2", server_type: "main"
task.servers = [server1, server2]
assert_equal 2, Task.first.server_ids.size
assert_equal 2, Task.includes(:servers).first.servers.size
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment