From 46c139bdde82d13f7b1a860806e0502e69edbf74 Mon Sep 17 00:00:00 2001 From: Sharon Rosner Date: Sun, 9 Mar 2008 06:55:25 +0000 Subject: [PATCH] Fixed Model.associate to accept class and class name in :class option. --- sequel_model/CHANGELOG | 4 +++ sequel_model/lib/sequel_model/associations.rb | 7 ++--- sequel_model/spec/associations_spec.rb | 30 ++++++++----------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/sequel_model/CHANGELOG b/sequel_model/CHANGELOG index 74a0dae0a5..eab77b9d6e 100644 --- a/sequel_model/CHANGELOG +++ b/sequel_model/CHANGELOG @@ -1,3 +1,7 @@ +=== SVN + +* Fixed Model.associate to accept class and class name in :class option. + === 0.5 (2008-03-08) * Merged new associations branch into trunk. diff --git a/sequel_model/lib/sequel_model/associations.rb b/sequel_model/lib/sequel_model/associations.rb index f005538ebc..5cc1eacc48 100644 --- a/sequel_model/lib/sequel_model/associations.rb +++ b/sequel_model/lib/sequel_model/associations.rb @@ -80,12 +80,9 @@ def all_association_reflections # # The following options can be supplied: # * *ALL types*: - # - :class_name - The name of the associated class as a string. If not + # - :class - The associated class or its name. If not # given, uses the association's name, which is camelized (and # singularized if type is :{one,many}_to_many) - # - :class - The associated class itself. Simpler than using - # :class_name, but can't be used always due to dependencies not being - # loaded. # * :many_to_one: # - :key - foreign_key in current model's table that references # associated model's primary key, as a symbol. Defaults to :"#{name}_id". @@ -117,7 +114,7 @@ def associate(type, name, opts = {}, &block) end # prepare options - opts[:class_name] ||= opts[:class].name if opts[:class] + opts[:class_name] ||= opts[:class].to_s if opts[:class] opts = association_reflections[name] = opts.merge(:type => type, :name => name, :block => block) send(:"def_#{type}", name, opts) diff --git a/sequel_model/spec/associations_spec.rb b/sequel_model/spec/associations_spec.rb index 2379d5b870..12c143d683 100644 --- a/sequel_model/spec/associations_spec.rb +++ b/sequel_model/spec/associations_spec.rb @@ -150,9 +150,8 @@ def columns; [:id, :node_id]; end @c2 = Class.new(Sequel::Model(:nodes)) do attr_accessor :xxx - def self.name - 'Node' - end + def self.name; 'Node'; end + def self.to_s; 'Node'; end end @dataset = @c2.dataset @@ -353,17 +352,15 @@ class HistoricalValue < Sequel::Model MODEL_DB.reset @c1 = Class.new(Sequel::Model(:attributes)) do - def self.name - 'Attribute' - end + def self.name; 'Attribute'; end + def self.to_s; 'Attribute'; end end @c2 = Class.new(Sequel::Model(:nodes)) do attr_accessor :xxx - def self.name - 'Node' - end + def self.name; 'Node'; end + def self.to_s; 'Node'; end end @dataset = @c2.dataset @@ -546,9 +543,8 @@ class Tag < Sequel::Model before(:each) do MODEL_DB.reset @c1 = Class.new(Sequel::Model(:nodes)) do - def self.name - 'Node' - end + def self.name; 'Node'; end + def self.to_s; 'Node'; end end end @@ -572,9 +568,8 @@ def self.name before(:each) do MODEL_DB.reset @c1 = Class.new(Sequel::Model(:nodes)) do - def self.name - 'Node' - end + def self.name; 'Node'; end + def self.to_s; 'Node'; end end end @@ -600,9 +595,8 @@ def self.name before(:each) do MODEL_DB.reset @c1 = Class.new(Sequel::Model(:nodes)) do - def self.name - 'Node' - end + def self.name; 'Node'; end + def self.to_s; 'Node'; end end end