globalize3 0.0.3 → 0.0.4

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.
@@ -11,18 +11,16 @@ module Globalize
11
11
  extend ClassMethods, Migration
12
12
 
13
13
  class_inheritable_accessor :translated_attribute_names, :translation_options
14
- class_inheritable_writer :required_attributes
15
-
16
14
  self.translated_attribute_names = attr_names.map(&:to_sym)
17
15
  self.translation_options = options
18
16
 
19
- after_save :save_translations!
20
-
21
17
  has_many :translations, :class_name => translation_class.name,
22
18
  :foreign_key => class_name.foreign_key,
23
19
  :dependent => :delete_all,
24
20
  :extend => HasManyExtensions
25
21
 
22
+ after_save :save_translations!
23
+
26
24
  attr_names.each { |attr_name| translated_attr_accessor(attr_name) }
27
25
  end
28
26
 
@@ -22,10 +22,14 @@ module Globalize
22
22
  locales ||= Globalize.fallbacks
23
23
  with_translations.where(
24
24
  translated_column_name(name) => value,
25
- translated_column_name(:locale) => locales.map(&:to_s)
25
+ translated_column_name(:locale) => Array(locales).map(&:to_s)
26
26
  )
27
27
  end
28
28
 
29
+ def translated?(name)
30
+ translated_attribute_names.include?(name)
31
+ end
32
+
29
33
  def required_attributes
30
34
  validators.map { |v| v.attributes if v.is_a?(ActiveModel::Validations::PresenceValidator) }.flatten
31
35
  end
@@ -52,11 +56,11 @@ module Globalize
52
56
  end
53
57
 
54
58
  def respond_to?(method, *args, &block)
55
- method.to_s =~ /^find_by_(\w+)$/ && translated_attribute_names.include?($1.to_sym) || super
59
+ method.to_s =~ /^find_by_(\w+)$/ && translated?($1.to_sym) || super
56
60
  end
57
61
 
58
62
  def method_missing(method, *args)
59
- if method.to_s =~ /^find_(first_|)by_(\w+)$/ && translated_attribute_names.include?($2.to_sym)
63
+ if method.to_s =~ /^find_(first_|)by_(\w+)$/ && translated?($2.to_sym)
60
64
  result = with_translated_attribute($2, args.first)
61
65
  $1 == 'first_' ? result.first : result.all
62
66
  else
@@ -67,13 +71,12 @@ module Globalize
67
71
  protected
68
72
 
69
73
  def translated_attr_accessor(name)
70
- define_method :"#{name}=", lambda { |value|
71
- globalize.write(Globalize.locale, name, value)
72
- self[name] = value
73
- }
74
- define_method name, lambda { |*args|
74
+ define_method(:"#{name}=") do |value|
75
+ self[name] = globalize.write(Globalize.locale, name, value)
76
+ end
77
+ define_method(name) do |*args|
75
78
  globalize.fetch(args.first || Globalize.locale, name)
76
- }
79
+ end
77
80
  alias_method :"#{name}_before_type_cast", name
78
81
  end
79
82
  end
@@ -1,3 +1,3 @@
1
1
  module Globalize
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globalize3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2010-08-02 00:00:00 +02:00
21
+ date: 2010-08-04 00:00:00 +02:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency