Created
July 21, 2014 09:24
-
-
Save slbug/a1fa6c7069c90bb8c7ae to your computer and use it in GitHub Desktop.
Revisions
-
slbug created this gist
Jul 21, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,74 @@ unless File.exist?('Gemfile') File.write('Gemfile', <<-GEMFILE) source 'https://rubygems.org' gem 'rails', github: 'rails/rails' gem 'arel', github: 'rails/arel' gem 'rack', github: 'rack/rack' gem 'pg' GEMFILE system 'bundle' end require 'bundler' Bundler.setup(:default) require 'active_record' require 'minitest/autorun' require 'logger' # This connection will do for database-independent bug reports. ActiveRecord::Base.establish_connection(adapter: 'postgresql', database: 'pgtest', username: 'pgtest', password: 'pgtest') ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Schema.define do create_table :posts do |t| end create_table :users do |t| t.integer :company_id end create_table :companies do |t| end create_table :comments do |t| t.integer :post_id t.integer :user_id end end class User < ActiveRecord::Base belongs_to :company delegate :users, to: :company, prefix: :company end class Company < ActiveRecord::Base has_many :users end class Post < ActiveRecord::Base has_many :comments scope :commenting, -> (users) { includes(:comments).references(:comments).where(comments: { user: users }) } end class Comment < ActiveRecord::Base belongs_to :post belongs_to :user end class BugTest < Minitest::Test def test_association_stuff post = Post.create! company = Company.create! user = User.create!(company: company) post.comments << Comment.create!(user: user) assert_equal Post.commenting(user.company_users).to_a.size, 1 end end