dr_nic_magic_models 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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