globalize3 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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