has_localization_table 0.1.0 → 0.1.1

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.
@@ -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: