johnsbrn-classy-inheritance 0.6.3.2 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.6.4 2009-02-01
2
+ * Updated deprecated default error messages - johnsbrn
3
+ * Added has_dependency for non-polymorphic has_one - johnsbrn
1
4
  == 0.6.3 2009-01-13
2
5
  * Fixed validations for prefix and postfix - johnsbrn
3
6
  == 0.6.2 2008-09-25
@@ -40,7 +40,10 @@ module Stonean
40
40
  options[:attrs].each{|attr| define_accessors(model_sym, attr, options)}
41
41
  end
42
42
 
43
-
43
+ def has_dependency(model_sym, options = {})
44
+ depends_on(model_sym, options.update(:has_dependency => true))
45
+ end
46
+
44
47
  def can_be(model_sym, options = {})
45
48
  unless options[:as]
46
49
  raise ArgumentError, ":as attribute required when calling can_be"
@@ -62,7 +65,7 @@ module Stonean
62
65
  private
63
66
 
64
67
  def classy_options
65
- [:as, :attrs, :prefix, :postfix, :validates_presence_if, :validates_associated_if]
68
+ [:as, :attrs, :has_dependency, :prefix, :postfix, :validates_presence_if, :validates_associated_if]
66
69
  end
67
70
 
68
71
  def delete_classy_options(options, *keepers)
@@ -78,6 +81,8 @@ module Stonean
78
81
  as_opt = opts.delete(:as)
79
82
  opts = polymorphic_constraints(as_opt).merge(opts)
80
83
  has_one model_sym, opts
84
+ elsif options[:has_dependency]
85
+ has_one model_sym, opts
81
86
  else
82
87
  belongs_to model_sym, opts
83
88
  end
@@ -138,7 +143,7 @@ module Stonean
138
143
  if options[:postfix]
139
144
  accessor_method_name = (options[:postfix] == true) ? "#{accessor_method_name}_#{model_sym}" : "#{accessor_method_name}_#{options[:postfix]}"
140
145
  end
141
-
146
+
142
147
  define_method accessor_method_name do
143
148
  eval("self.#{model_sym} ? self.#{model_sym}.#{attr} : nil")
144
149
  end
@@ -176,7 +181,7 @@ if Object.const_defined?("ActiveRecord") && ActiveRecord.const_defined?("Base")
176
181
  module ActiveRecord::Validations::ClassMethods
177
182
 
178
183
  def validates_associated_dependent(model_sym, options, configuration = {})
179
- configuration = { :message => ActiveRecord::Errors.default_error_messages[:invalid], :on => :save }.update(configuration)
184
+ configuration = { :message => I18n.translate('activerecord.errors.messages')[:invalid], :on => :save }.update(configuration)
180
185
 
181
186
  validates_each(model_sym, configuration) do |record, attr_name, value|
182
187
  associate = record.send(attr_name)
data/test/test_helper.rb CHANGED
@@ -19,6 +19,22 @@ class SetupTestTables < ActiveRecord::Migration
19
19
  t.timestamps
20
20
  end
21
21
 
22
+ create_table :accounts, :force => true do |t|
23
+ t.string :first_name
24
+ t.string :last_name
25
+ t.string :email
26
+
27
+ t.timestamps
28
+ end
29
+
30
+ create_table :account_logins, :force => true do |t|
31
+ t.string :login
32
+ t.string :password
33
+ t.integer :account_id
34
+
35
+ t.timestamps
36
+ end
37
+
22
38
  create_table :users, :force => true do |t|
23
39
  t.string :login
24
40
  t.integer :profile_id
@@ -82,6 +98,8 @@ class SetupTestTables < ActiveRecord::Migration
82
98
  end
83
99
 
84
100
  def self.down
101
+ drop_table :accounts
102
+ drop_table :account_logins
85
103
  drop_table :authors
86
104
  drop_table :artists
87
105
  drop_table :users
@@ -100,6 +118,14 @@ class Profile < ActiveRecord::Base
100
118
  validates_presence_of :first_name, :last_name, :email
101
119
  end
102
120
 
121
+ class Account < ActiveRecord::Base
122
+ validates_presence_of :first_name, :last_name, :email
123
+ end
124
+
125
+ class AccountLogin < ActiveRecord::Base
126
+ validates_presence_of :login, :password
127
+ end
128
+
103
129
  class User < ActiveRecord::Base
104
130
  validates_presence_of :login
105
131
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: johnsbrn-classy-inheritance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3.2
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Stone
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-21 00:00:00 -08:00
12
+ date: 2009-02-01 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,6 +44,7 @@ files:
44
44
  - test/test_with_optional_dependency.rb
45
45
  - test/test_with_prefix_postfix.rb
46
46
  - test/test_with_standard_attributes.rb
47
+ - test/test_has_dependency.rb
47
48
  has_rdoc: true
48
49
  homepage: http://stonean.com/wiki/classy-inheritance
49
50
  post_install_message:
@@ -73,6 +74,7 @@ specification_version: 2
73
74
  summary: Classy Inheritance adds a depends_on class method to your ActiveRecord model so that you can define requisite objects
74
75
  test_files:
75
76
  - test/test_classy-inheritance.rb
77
+ - test/test_has_dependency.rb
76
78
  - test/test_helper.rb
77
79
  - test/test_polymorphic_associations.rb
78
80
  - test/test_with_optional_dependency.rb