has_localization_table 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,16 +3,13 @@ module HasLocalizationTable
3
3
  def has_localization_table(*args)
4
4
  options = args.extract_options!
5
5
  options[:association_name] = args.first || HasLocalizationTable.default_association_name
6
+ options[:class_name] = options[:class_name].name if options[:class_name].respond_to?(:name)
6
7
 
7
8
  class_attribute :localization_table_options
8
- self.localization_table_options = { dependent: :delete_all, class_name: localization_class.name }.merge(options)
9
+ self.localization_table_options = { dependent: :delete_all, class_name: self.name + HasLocalizationTable.class_suffix }.merge(options)
9
10
 
10
11
  extend(ClassMethods)
11
12
  include(InstanceMethods)
12
13
  end
13
-
14
- def localization_class
15
- (self.name + HasLocalizationTable.class_suffix).constantize
16
- end
17
14
  end
18
15
  end
@@ -42,6 +42,10 @@ module HasLocalizationTable
42
42
  alias_method :"with_#{klass.localization_association_name}", :with_localizations
43
43
  end
44
44
 
45
+ def localization_class
46
+ localization_table_options[:class_name].constantize
47
+ end
48
+
45
49
  def localization_association_name
46
50
  localization_table_options[:association_name]
47
51
  end
@@ -96,11 +100,13 @@ module HasLocalizationTable
96
100
  end
97
101
 
98
102
  def with_localizations
99
- scoped.joins((<<-eoq % HasLocalizationTable.current_locale.id).gsub(/\s+/, " "))
100
- LEFT OUTER JOIN #{localization_class.table_name}
101
- ON #{localization_class.table_name}.#{self.name.underscore}_id = #{self.table_name}.#{self.primary_key}
102
- AND #{localization_class.table_name}.#{HasLocalizationTable.locale_foreign_key} = %d
103
- eoq
103
+ lcat = localization_class.arel_table
104
+
105
+ scoped.joins(
106
+ arel_table.join(lcat, Arel::Nodes::OuterJoin).
107
+ on(lcat[:"#{self.name.underscore}_id"].eq(arel_table[self.primary_key]).and(lcat[HasLocalizationTable.locale_foreign_key].eq(HasLocalizationTable.current_locale.id))).
108
+ join_sql
109
+ )
104
110
  end
105
111
 
106
112
  private
@@ -1,3 +1,3 @@
1
1
  module HasLocalizationTable
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_localization_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-15 00:00:00.000000000 Z
12
+ date: 2012-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &11803100 !ruby/object:Gem::Requirement
16
+ requirement: &11607560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11803100
24
+ version_requirements: *11607560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &11802200 !ruby/object:Gem::Requirement
27
+ requirement: &11606680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *11802200
35
+ version_requirements: *11606680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &11800680 !ruby/object:Gem::Requirement
38
+ requirement: &11606080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *11800680
46
+ version_requirements: *11606080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
- requirement: &11866300 !ruby/object:Gem::Requirement
49
+ requirement: &11605360 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *11866300
57
+ version_requirements: *11605360
58
58
  description: Automatically sets up usage of a relational table to contain user-created
59
59
  multi-locale string attributes
60
60
  email: