dr_nic_magic_models 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ *** 0.9.2 / 2007-4-30
2
+
3
+ + 1 major buxfix:
4
+ + #generate_validations now works if you haven't already created a connection to the database; previously
5
+ validations wouldn't get created until you had already established the connection; now it does it for
6
+ you if its not already established
7
+ + Associations can be generated via the assignment methods, e.g. @membership.group= will generate the "belongs_to :group" association now. This allows the website tutorial to work correctly! Yay. That is, you can now do: Membership.create(:person => person, :group => group)
8
+ + has_many's should work now
9
+
1
10
  *** 0.9.1 / 2007-4-11
2
11
 
3
12
  + 1 minor enhancement:
@@ -47,9 +47,10 @@ module DrNicMagicModels::MagicModel
47
47
  end
48
48
 
49
49
  def find_belongs_to(method, *args, &block)
50
+ method_clean = clean_method method
50
51
  fkc =
51
52
  begin
52
- self.class.connection.foreign_key_constraints(self.class.table_name, method)
53
+ self.class.connection.foreign_key_constraints(self.class.table_name, method_clean)
53
54
  rescue NotImplementedError
54
55
  nil
55
56
  end
@@ -59,19 +60,20 @@ module DrNicMagicModels::MagicModel
59
60
  :foreign_key => fkc.first.foreign_key,
60
61
  :class_name => self.class.class_name(fkc.first.reference_table)}
61
62
  else
62
- foreign_key = self.class.columns.select {|column| column.name == method.to_s.foreign_key}.first
63
+ foreign_key = self.class.columns.select {|column| column.name == method_clean.to_s.foreign_key}.first
63
64
  end
64
65
  options ||= {}
65
- return add_belongs_to(method, options, *args, &block) if foreign_key
66
+ return add_belongs_to(method, method_clean, options, *args, &block) if foreign_key
66
67
  end
67
68
 
68
- def add_belongs_to(method, options, *args, &block)
69
- self.class.send 'belongs_to', method, options rescue puts $!
69
+ def add_belongs_to(method, method_clean, options, *args, &block)
70
+ self.class.send 'belongs_to', method_clean.to_sym, options rescue puts $!
70
71
  self.send(method, *args, &block)
71
72
  end
72
73
 
73
74
  def find_has_some(method, *args, &block)
74
- fkc = [method.to_s.pluralize, method.to_s.singularize].inject({}) do |pair, table_name|
75
+ method_clean = clean_method method
76
+ fkc = [method_clean.to_s.pluralize, method_clean.to_s.singularize].inject({}) do |pair, table_name|
75
77
  fkc = begin
76
78
  self.class.connection.foreign_key_constraints(table_name)
77
79
  rescue NotImplementedError
@@ -91,17 +93,16 @@ module DrNicMagicModels::MagicModel
91
93
  end
92
94
  end
93
95
  unless foreign_key
94
- klass = Module.const_get method.to_s.downcase.singularize.camelize rescue nil
96
+ klass = Module.const_get method_clean.to_s.downcase.singularize.camelize rescue nil
95
97
  foreign_key = klass.columns.select {|column| column.name == self.class.name.foreign_key}.first if klass
96
98
  end
97
99
  options ||= {}
98
- return add_has_some(method, options, *args, &block) if foreign_key
100
+ return add_has_some(method, method_clean, options, *args, &block) if foreign_key
99
101
  end
100
102
 
101
- def add_has_some(method, options, *args, &block)
102
- _method = method.to_s
103
- association = _method.singularize == _method ? 'has_one' : 'has_many'
104
- self.class.send association, method, options rescue puts $!
103
+ def add_has_some(method, method_clean, options, *args, &block)
104
+ association = method_clean.singularize == method_clean ? 'has_one' : 'has_many'
105
+ self.class.send association, method_clean.to_sym, options rescue puts $!
105
106
  self.send(method, *args, &block)
106
107
  end
107
108
 
@@ -119,9 +120,14 @@ module DrNicMagicModels::MagicModel
119
120
  end
120
121
 
121
122
  def add_has_some_through(join_table, method, *args, &block)
122
- puts "#{self.class}.has_many #{method.inspect}, #{join_table.inspect}, #{args.inspect}"
123
123
  self.class.send 'has_many', method, :through => join_table.to_sym
124
124
  self.send(method, *args, &block)
125
125
  end
126
+
127
+ private
128
+
129
+ def clean_method(method)
130
+ method.to_s.gsub(/=$/,'') # remove any = from the end of the method name
131
+ end
126
132
  end
127
133
  end
@@ -5,6 +5,9 @@ module DrNicMagicModels
5
5
 
6
6
  logger = DrNicMagicModels::Logger
7
7
 
8
+ # Ensure that the connection to db is established, else validations don't get created.
9
+ ActiveRecord::Base.connection
10
+
8
11
  # Code reworked from http://www.redhillconsulting.com.au/rails_plugins.html
9
12
  # Thanks Red Hill Consulting for using an MIT licence :o)
10
13
 
@@ -2,7 +2,7 @@ module DrNicMagicModels #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 9
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -275,7 +275,7 @@ demonstrated above) to have the brilliantly simple support that Rails/ActiveReco
275
275
  </pre></p>
276
276
 
277
277
 
278
- <p>The final association trick is a ripper. Automatic generation of <code>has_many :through</code> associations&#8230;</p>
278
+ <p>That final association trick is a ripper. Automatic generation of <code>has_many :through</code> associations&#8230;</p>
279
279
 
280
280
 
281
281
  <p><pre class="syntax">
@@ -390,7 +390,7 @@ other stories and things.</p>
390
390
  <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>
391
391
  or via his blog at <a href="http://www.drnicwilliams.com">http://www.drnicwilliams.com</a></p>
392
392
  <p class="coda">
393
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 11th April 2007<br>
393
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 30th April 2007<br>
394
394
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
395
395
  </p>
396
396
  </div>
@@ -200,7 +200,7 @@ group.memberships
200
200
  </pre>
201
201
 
202
202
 
203
- The final association trick is a ripper. Automatic generation of <code>has_many :through</code> associations...
203
+ That final association trick is a ripper. Automatic generation of <code>has_many :through</code> associations...
204
204
 
205
205
  <pre syntax="ruby">
206
206
  >> person.groups
@@ -1,3 +1,3 @@
1
1
  // Version JS file
2
- var version = "0.9.1";
2
+ var version = "0.9.2";
3
3
  MagicAnnouncement.show('magicmodels', version);
@@ -1,4 +1,4 @@
1
1
  // Version JS file
2
- var version = "0.9.1";
2
+ var version = "0.9.2";
3
3
 
4
4
  document.write(" - " + version);
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: dr_nic_magic_models
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.9.1
7
- date: 2007-04-11 00:00:00 +02:00
6
+ version: 0.9.2
7
+ date: 2007-04-30 00:00:00 +02:00
8
8
  summary: Dr Nic's Magic Models - Invisible validations, assocations and Active Record models themselves!
9
9
  require_paths:
10
10
  - lib