Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

association builder classes no longer need the model

decouple the builder classes from the model.  Builder objects should be
easier to reuse now.
  • Loading branch information...
commit d80a5cce88aca297ca489b90b62e2cc164c238f1 1 parent 8ea64bd
@tenderlove tenderlove authored
View
11 activerecord/lib/active_record/associations/builder/association.rb
@@ -20,21 +20,20 @@ class << self
self.valid_options = [:class_name, :foreign_key, :validate]
self.extensions = []
- attr_reader :model, :name, :scope, :options
+ attr_reader :name, :scope, :options
def self.build(model, name, scope, options, &block)
raise ArgumentError, "association names must be a Symbol" unless name.kind_of?(Symbol)
- builder = new(model, name, scope, options, &block)
- reflection = builder.build
+ builder = new(name, scope, options, &block)
+ reflection = builder.build(model)
builder.define_accessors model
builder.define_callbacks model, reflection
builder.define_extensions model
reflection
end
- def initialize(model, name, scope, options)
- @model = model
+ def initialize(name, scope, options)
@name = name
if scope.is_a?(Hash)
@@ -53,7 +52,7 @@ def initialize(model, name, scope, options)
end
end
- def build
+ def build(model)
ActiveRecord::Reflection.create(macro, name, scope, options, model)
end
View
2  activerecord/lib/active_record/associations/builder/collection_association.rb
@@ -14,7 +14,7 @@ def valid_options
attr_reader :block_extension
- def initialize(model, name, scope, options)
+ def initialize(name, scope, options)
super
@mod = nil
if block_given?
View
2  activerecord/test/cases/associations/extension_test.rb
@@ -75,7 +75,7 @@ def test_proxy_association_after_scoped
private
def extend!(model)
- builder = ActiveRecord::Associations::Builder::HasMany.new(model, :association_name, nil, {}) { }
+ builder = ActiveRecord::Associations::Builder::HasMany.new(:association_name, nil, {}) { }
builder.define_extensions(model)
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.