Skip to content

Instantly share code, notes, and snippets.

@hukl
Created October 24, 2011 18:49
Show Gist options
  • Save hukl/1309797 to your computer and use it in GitHub Desktop.
Save hukl/1309797 to your computer and use it in GitHub Desktop.
has_many :through regression. behaves as if :uniq => true was set
require 'active_record'
# Print out what version we're running
puts "Active Record #{ActiveRecord::VERSION::STRING}"
# Connect to an in-memory sqlite3 database (more on this in a moment)
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => ':memory:'
)
# Create the minimal database schema necessary to reproduce the bug
ActiveRecord::Schema.define do
create_table :orders, :force => true do |t|
end
create_table :tickets, :force => true do |t|
t.string :name
end
create_table :order_tickets, :force => true do |t|
t.integer :order_id
t.integer :ticket_id
end
end
class Order < ActiveRecord::Base
has_many :order_tickets
has_many :tickets, :through => :order_tickets
end
class Ticket < ActiveRecord::Base
has_many :order_tickets
has_many :orders, :through => :order_tickets
end
class OrderTicket < ActiveRecord::Base
belongs_to :order
belongs_to :ticket
end
ticket = Ticket.create :name => "Standard"
order = Order.create
order.tickets = [ ticket, ticket, ticket ]
puts "Ticket Count: #{order.tickets.reload.count}"
puts "Ticket Collection: #{order.tickets.inspect}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment