globalize 5.1.0.beta1 → 5.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Appraisals +33 -0
- data/CHANGELOG.md +22 -1
- data/CONTRIBUTING.md +15 -0
- data/Gemfile +1 -24
- data/README.md +14 -4
- data/docker-compose.yml +22 -0
- data/globalize.gemspec +32 -0
- data/issue_template.rb +38 -0
- data/lib/globalize.rb +9 -1
- data/lib/globalize/active_record.rb +10 -10
- data/lib/globalize/active_record/act_macro.rb +14 -9
- data/lib/globalize/active_record/adapter.rb +9 -0
- data/lib/globalize/active_record/adapter_dirty.rb +6 -2
- data/lib/globalize/active_record/class_methods.rb +9 -4
- data/lib/globalize/active_record/instance_methods.rb +41 -16
- data/lib/globalize/active_record/migration.rb +12 -3
- data/lib/globalize/active_record/{query_methods.rb → translated_attributes_query.rb} +60 -2
- data/lib/globalize/version.rb +3 -1
- data/lib/patches/active_record/rails4/serialization.rb +22 -0
- data/lib/patches/active_record/rails5_1/serialization.rb +22 -0
- data/lib/patches/active_record/rails5_1/uniqueness_validator.rb +45 -0
- data/lib/patches/active_record/serialization.rb +5 -21
- data/lib/patches/active_record/uniqueness_validator.rb +3 -1
- metadata +78 -17
- data/Gemfile.lock +0 -318
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 93f476f456eba6a50a3bda3d639ae4e4cc7d190d4b846a6534b26b1571dff968
|
4
|
+
data.tar.gz: 10d20462ade18061edc4facf99f4e23c58b7855e4121e5f0f2d29ab5eb36eb24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40ca71b7fefb3b4de28f8b6ae08c10fa6c8172cf69e86e18d3ab9166625f41a1ed15c4e4dd53977ff90a7dab4297577ab26a80de130fe58628fb67b0003be54b
|
7
|
+
data.tar.gz: 7e5c4637c7f29d92d69ff704fec7d3c71d409c9f27c321df3807055471135877470b37dce6b0daceb68fad96c160e3dd031bf75e1df743acc76156d35f46ccfb
|
data/Appraisals
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RAILS_VERSIONS = %w[
|
4
|
+
4.2.10
|
5
|
+
5.1.6
|
6
|
+
5.2.1
|
7
|
+
]
|
8
|
+
|
9
|
+
RAILS_VERSIONS.each do |version|
|
10
|
+
appraise "rails_#{version}" do
|
11
|
+
gem 'activemodel', version
|
12
|
+
gem 'activerecord', version
|
13
|
+
|
14
|
+
platforms :rbx do
|
15
|
+
gem "rubysl", "~> 2.0"
|
16
|
+
gem "rubinius-developer_tools"
|
17
|
+
end
|
18
|
+
|
19
|
+
platforms :jruby do
|
20
|
+
if !ENV['TRAVIS'] || ENV['DB'] == 'sqlite3'
|
21
|
+
gem 'activerecord-jdbcsqlite3-adapter', '~> 1'
|
22
|
+
end
|
23
|
+
|
24
|
+
if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
|
25
|
+
gem 'activerecord-jdbcmysql-adapter', '~> 1'
|
26
|
+
end
|
27
|
+
|
28
|
+
if !ENV['TRAVIS'] || %w(postgres postgresql).include?(ENV['DB'])
|
29
|
+
gem 'activerecord-jdbcpostgresql-adapter', '~> 1'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
# Globalize Changelog
|
2
2
|
|
3
|
-
## 5.1
|
3
|
+
## 5.3.1 (2021-01-11)
|
4
|
+
|
5
|
+
* Fix foreign keys translation. [#773](https://github.com/globalize/globalize/pull/773) by [Sergey Tokarenko](https://github.com/stokarenko)
|
6
|
+
|
7
|
+
## 5.3.0 (2019-05-14)
|
8
|
+
|
9
|
+
* Prevent 'SystemStackError: stack level too deep' error on attribute reset. [#722](https://github.com/globalize/globalize/pull/722) by [Reinier de Lange](https://github.com/moiristo)
|
10
|
+
* Pass the `:limit` option for the FK column. [#721](https://github.com/globalize/globalize/pull/721) by [Denis Demchenko](https://github.com/lancedikson)
|
11
|
+
* Add support for Rails 6.0. [#718](https://github.com/globalize/globalize/pull/718) by [Chrıs Seelus](https://github.com/cseelus)
|
12
|
+
* FIX: stop registering the attr for Rails 4.2. [#711](https://github.com/globalize/globalize/pull/711) by [Adam Fernung](https://github.com/akfernun)
|
13
|
+
|
14
|
+
## 5.2.0 (2018-11-02)
|
15
|
+
|
16
|
+
* Add support for translated attributes to other QueryMethods and Calculations [#707](https://github.com/globalize/globalize/pull/707) by [kreintjes](https://github.com/kreintjes)
|
17
|
+
* Fix `read_attribute` for Rails changes. [#709](https://github.com/globalize/globalize/pull/709) by [ota42y](https://github.com/ota42y) and [nabuchi](https://github.com/nabuchi)
|
18
|
+
* Support array as an argument of order. [#675](https://github.com/globalize/globalize/pull/675) by [Maicol Bentancor](https://github.com/MaicolBen)
|
19
|
+
* `_reset_attribute` bugfix. [#674](https://github.com/globalize/globalize/pull/674) by [ota42y](https://github.com/ota42y)
|
20
|
+
* Add support for Rails 5.2 [#678](https://github.com/globalize/globalize/pull/678) by [kevin-jj](https://github.com/kevin-jj)
|
21
|
+
* Fix: wrong number of arguments for ActiveRecord 'attribute' method [#671](https://github.com/globalize/globalize/pull/671) by [Evgeny Danilov](https://github.com/jmelkor)
|
22
|
+
* Resolve deprecation warning: attribute is not an attribute known to Active Record. [#629](https://github.com/globalize/globalize/pull/629) by [Michael Rüffer](https://github.com/itschn)
|
23
|
+
|
24
|
+
## 5.1.0 (2018-01-15)
|
4
25
|
|
5
26
|
* Replaced `after_` callbacks with `before_` callbacks and set `autosave: true` by default. [#341](https://github.com/globalize/globalize/pull/341) by [Andrew Volozhanin](https://github.com/scarfacedeb)
|
6
27
|
* Add [RequestStore](https://github.com/steveklabnik/request_store) to make Globalize thread-safe again [#420](https://github.com/globalize/globalize/pull/420)
|
data/CONTRIBUTING.md
CHANGED
@@ -35,3 +35,18 @@ Have a bug fix, code improvement or proposed feature? Do the following:
|
|
35
35
|
For pull requests to Rails/ActiveRecord 4 version of Globalize (v3.x), post to the `master` branch. For pull requests to the Rails/ActiveRecord 3.x version of Globalize (3.x), post to the `3-0-stable` branch.
|
36
36
|
|
37
37
|
When you submit the pull request, Travis CI will run the [test suite](https://travis-ci.org/globalize/globalize) against your branch and will highlight any failures. Unless there is a good reason for it, we do not generally accept pull requests that take Globalize from green to red.
|
38
|
+
|
39
|
+
## Testing
|
40
|
+
|
41
|
+
### Requirements
|
42
|
+
|
43
|
+
- Ruby
|
44
|
+
- Bundler
|
45
|
+
- SQLite
|
46
|
+
- You can switch the database by adding an environment variable. See `test/support/database.rb`.
|
47
|
+
- You can also configure your database configurations. See `test/support/database.yml`.
|
48
|
+
|
49
|
+
### Run tests on your local machine
|
50
|
+
|
51
|
+
- `bundle install`
|
52
|
+
- `bundle exec rake`
|
data/Gemfile
CHANGED
@@ -1,26 +1,3 @@
|
|
1
|
-
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gemspec
|
4
|
-
|
5
|
-
gem "pry"
|
6
|
-
|
7
|
-
eval File.read(File.expand_path("../gemfiles/.gemfile.database-config.rb", __FILE__))
|
8
|
-
|
9
|
-
platforms :rbx do
|
10
|
-
gem "rubysl", "~> 2.0"
|
11
|
-
gem "rubinius-developer_tools"
|
12
|
-
end
|
13
|
-
|
14
|
-
platforms :jruby do
|
15
|
-
if !ENV['TRAVIS'] || ENV['DB'] == 'sqlite3'
|
16
|
-
gem 'activerecord-jdbcsqlite3-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
17
|
-
end
|
18
|
-
|
19
|
-
if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
|
20
|
-
gem 'activerecord-jdbcmysql-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
21
|
-
end
|
22
|
-
|
23
|
-
if !ENV['TRAVIS'] || %w(postgres postgresql).include?(ENV['DB'])
|
24
|
-
gem 'activerecord-jdbcpostgresql-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
25
|
-
end
|
26
|
-
end
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
![Globalize](http://globalize.github.io/globalize/images/globalize.png)
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/globalize/globalize.svg?branch=master)](https://travis-ci.org/globalize/globalize) [![Code Climate](https://codeclimate.com/github/globalize/globalize.svg)](https://codeclimate.com/github/globalize/globalize)
|
4
|
+
[![Open Source Helpers](https://www.codetriage.com/globalize/globalize/badges/users.svg)](https://www.codetriage.com/globalize/globalize)
|
4
5
|
|
5
6
|
You can chat with us using Gitter:
|
6
7
|
|
@@ -27,10 +28,10 @@ gem install globalize
|
|
27
28
|
When using bundler put this in your Gemfile:
|
28
29
|
|
29
30
|
```ruby
|
30
|
-
gem 'globalize', '~> 5.
|
31
|
+
gem 'globalize', '~> 5.1.0'
|
31
32
|
```
|
32
33
|
|
33
|
-
|
34
|
+
Please help us by letting us know what works, and what doesn't, when using pre-release code.
|
34
35
|
|
35
36
|
Put in your Gemfile
|
36
37
|
|
@@ -239,14 +240,20 @@ Because globalize uses the `:locale` key to specify the locale during
|
|
239
240
|
mass-assignment, you should avoid having a `locale` attribute on the parent
|
240
241
|
model.
|
241
242
|
|
243
|
+
If you like your translated model to update if a translation changes, use the `touch: true` option together with `translates`:
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
translates :name, touch: true
|
247
|
+
```
|
248
|
+
|
242
249
|
## Known Issues
|
243
250
|
|
244
251
|
If you're getting the `ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR: null value in column "column_name" violates not-null constraint` error, the only known way to deal with it as of now is to remove not-null constraint for the globalized columns:
|
245
252
|
|
246
253
|
```ruby
|
247
|
-
class
|
254
|
+
class RemoveNullConstraintsFromResourceTranslations < ActiveRecord::Migration
|
248
255
|
def change
|
249
|
-
change_column_null :
|
256
|
+
change_column_null :resource_translations, :column_name, true
|
250
257
|
end
|
251
258
|
end
|
252
259
|
```
|
@@ -264,6 +271,9 @@ You can enable them by adding the next line to `config/application.rb` (or only
|
|
264
271
|
`config/environments/production.rb` if you only want them in production)
|
265
272
|
|
266
273
|
```ruby
|
274
|
+
# For version 1.1.0 and above of the `i18n` gem:
|
275
|
+
config.i18n.fallbacks = [I18n.default_locale]
|
276
|
+
# Below version 1.1.0 of the `i18n` gem:
|
267
277
|
config.i18n.fallbacks = true
|
268
278
|
```
|
269
279
|
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
version: '3.7'
|
2
|
+
services:
|
3
|
+
postgres:
|
4
|
+
image: postgres:11
|
5
|
+
volumes:
|
6
|
+
- ./tmp/postgres:/var/lib/postgresql/data
|
7
|
+
ports:
|
8
|
+
- "5432:5432"
|
9
|
+
environment:
|
10
|
+
POSTGRES_USER: "postgres"
|
11
|
+
POSTGRES_PASSWORD: ""
|
12
|
+
mysql:
|
13
|
+
image: mysql:8.0
|
14
|
+
volumes:
|
15
|
+
- ./tmp/mysql:/var/lib/mysql
|
16
|
+
ports:
|
17
|
+
- "3306:3306"
|
18
|
+
environment:
|
19
|
+
MYSQL_USER: "root"
|
20
|
+
MYSQL_PASSWORD: ""
|
21
|
+
MYSQL_ROOT_PASSWORD: ""
|
22
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
data/globalize.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path('../lib/globalize/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'globalize'
|
5
|
+
s.version = Globalize::Version
|
6
|
+
s.authors = ['Sven Fuchs', 'Joshua Harvey', 'Clemens Kofler', 'John-Paul Bader', 'Tomasz Stachewicz', 'Philip Arndt', 'Chris Salzberg']
|
7
|
+
s.email = 'nobody@globalize-rails.org'
|
8
|
+
s.homepage = 'http://github.com/globalize/globalize'
|
9
|
+
s.summary = 'Rails I18n de-facto standard library for ActiveRecord model/data translation'
|
10
|
+
s.description = "#{s.summary}."
|
11
|
+
s.license = "MIT"
|
12
|
+
|
13
|
+
s.files = Dir['{lib/**/*,[A-Z]*}']
|
14
|
+
s.platform = Gem::Platform::RUBY
|
15
|
+
s.require_path = 'lib'
|
16
|
+
s.rubyforge_project = '[none]'
|
17
|
+
s.required_ruby_version = '>= 2.4.6'
|
18
|
+
|
19
|
+
s.add_dependency 'activerecord', '>= 4.2', '< 6.1'
|
20
|
+
s.add_dependency 'activemodel', '>= 4.2', '< 6.1'
|
21
|
+
s.add_dependency 'request_store', '~> 1.0'
|
22
|
+
|
23
|
+
s.add_development_dependency 'appraisal'
|
24
|
+
s.add_development_dependency 'database_cleaner'
|
25
|
+
s.add_development_dependency 'm'
|
26
|
+
s.add_development_dependency 'minitest'
|
27
|
+
s.add_development_dependency 'minitest-reporters'
|
28
|
+
s.add_development_dependency 'pry'
|
29
|
+
s.add_development_dependency 'rake'
|
30
|
+
s.add_development_dependency 'rdoc'
|
31
|
+
s.add_development_dependency 'sqlite3'
|
32
|
+
end
|
data/issue_template.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Activate the gem you are reporting the issue against.
|
2
|
+
gem 'activerecord', '4.2.0'
|
3
|
+
gem 'globalize', '5.0.1'
|
4
|
+
require 'active_record'
|
5
|
+
require 'globalize'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'logger'
|
8
|
+
|
9
|
+
# Ensure backward compatibility with Minitest 4
|
10
|
+
Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
|
11
|
+
|
12
|
+
# This connection will do for database-independent bug reports.
|
13
|
+
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
|
14
|
+
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
15
|
+
|
16
|
+
ActiveRecord::Schema.define do
|
17
|
+
create_table :posts, force: true do |t|
|
18
|
+
end
|
19
|
+
|
20
|
+
create_table :post_translations, force: true do |t|
|
21
|
+
t.references :post
|
22
|
+
t.string :title
|
23
|
+
t.text :content
|
24
|
+
t.string :locale
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Post < ActiveRecord::Base
|
29
|
+
translates :content, :title
|
30
|
+
end
|
31
|
+
|
32
|
+
class BugTest < Minitest::Test
|
33
|
+
def test_association_stuff
|
34
|
+
post = Post.create!(title: 'HI')
|
35
|
+
|
36
|
+
assert_equal 'HI', post.title
|
37
|
+
end
|
38
|
+
end
|
data/lib/globalize.rb
CHANGED
@@ -58,6 +58,14 @@ module Globalize
|
|
58
58
|
RequestStore.store
|
59
59
|
end
|
60
60
|
|
61
|
+
def rails_5?
|
62
|
+
::ActiveRecord.version >= Gem::Version.new('5.1.0')
|
63
|
+
end
|
64
|
+
|
65
|
+
def rails_52?
|
66
|
+
::ActiveRecord.version >= Gem::Version.new('5.2.0')
|
67
|
+
end
|
68
|
+
|
61
69
|
protected
|
62
70
|
|
63
71
|
def read_locale
|
@@ -84,7 +92,7 @@ module Globalize
|
|
84
92
|
end
|
85
93
|
end
|
86
94
|
|
87
|
-
ActiveRecord::Base.
|
95
|
+
ActiveRecord::Base.class_attribute :globalize_serialized_attributes, instance_writer: false
|
88
96
|
ActiveRecord::Base.globalize_serialized_attributes = {}
|
89
97
|
|
90
98
|
ActiveRecord::Base.extend(Globalize::ActiveRecord::ActMacro)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module Globalize
|
2
2
|
module ActiveRecord
|
3
|
-
autoload :ActMacro,
|
4
|
-
autoload :Adapter,
|
5
|
-
autoload :AdapterDirty,
|
6
|
-
autoload :Attributes,
|
7
|
-
autoload :ClassMethods,
|
8
|
-
autoload :Exceptions,
|
9
|
-
autoload :InstanceMethods,
|
10
|
-
autoload :Migration,
|
11
|
-
autoload :Translation,
|
12
|
-
autoload :
|
3
|
+
autoload :ActMacro, 'globalize/active_record/act_macro'
|
4
|
+
autoload :Adapter, 'globalize/active_record/adapter'
|
5
|
+
autoload :AdapterDirty, 'globalize/active_record/adapter_dirty'
|
6
|
+
autoload :Attributes, 'globalize/active_record/attributes'
|
7
|
+
autoload :ClassMethods, 'globalize/active_record/class_methods'
|
8
|
+
autoload :Exceptions, 'globalize/active_record/exceptions'
|
9
|
+
autoload :InstanceMethods, 'globalize/active_record/instance_methods'
|
10
|
+
autoload :Migration, 'globalize/active_record/migration'
|
11
|
+
autoload :Translation, 'globalize/active_record/translation'
|
12
|
+
autoload :TranslatedAttributesQuery, 'globalize/active_record/translated_attributes_query'
|
13
13
|
end
|
14
14
|
end
|
@@ -40,16 +40,19 @@ module Globalize
|
|
40
40
|
self.translated_attribute_names << attr_name
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
begin
|
44
|
+
if ::ActiveRecord::VERSION::STRING > "5.0" && table_exists? && translation_class.table_exists?
|
45
|
+
self.ignored_columns += translated_attribute_names.map(&:to_s)
|
46
|
+
reset_column_information
|
47
|
+
end
|
48
|
+
rescue ::ActiveRecord::NoDatabaseError
|
49
|
+
warn 'Unable to connect to a database. Globalize skipped ignoring columns of translated attributes.'
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
49
53
|
def check_columns!(attr_names)
|
50
|
-
# If tables do not exist, do not warn about conflicting columns
|
51
|
-
return unless table_exists? && translation_class.table_exists?
|
52
|
-
|
54
|
+
# If tables do not exist or Rails version is greater than 5, do not warn about conflicting columns
|
55
|
+
return unless ::ActiveRecord::VERSION::STRING < "5.0" && table_exists? && translation_class.table_exists?
|
53
56
|
if (overlap = attr_names.map(&:to_s) & column_names).present?
|
54
57
|
ActiveSupport::Deprecation.warn(
|
55
58
|
["You have defined one or more translated attributes with names that conflict with column(s) on the model table. ",
|
@@ -58,6 +61,8 @@ module Globalize
|
|
58
61
|
"Attribute name(s): #{overlap.join(', ')}\n"].join
|
59
62
|
)
|
60
63
|
end
|
64
|
+
rescue ::ActiveRecord::NoDatabaseError
|
65
|
+
warn 'Unable to connect to a database. Globalize skipped checking attributes with conflicting column names.'
|
61
66
|
end
|
62
67
|
|
63
68
|
def apply_globalize_options(options)
|
@@ -94,11 +99,11 @@ module Globalize
|
|
94
99
|
:foreign_key => options[:foreign_key],
|
95
100
|
:dependent => :destroy,
|
96
101
|
:extend => HasManyExtensions,
|
97
|
-
:autosave =>
|
102
|
+
:autosave => false,
|
98
103
|
:inverse_of => :globalized_model
|
99
104
|
|
100
|
-
|
101
|
-
|
105
|
+
after_create :save_translations!
|
106
|
+
after_update :save_translations!
|
102
107
|
end
|
103
108
|
end
|
104
109
|
|
@@ -43,6 +43,9 @@ module Globalize
|
|
43
43
|
value = value.val if value.is_a?(Arel::Nodes::Casted)
|
44
44
|
translation[name] = value
|
45
45
|
end
|
46
|
+
|
47
|
+
ensure_foreign_key_for(translation)
|
48
|
+
translation.save!
|
46
49
|
end
|
47
50
|
|
48
51
|
reset
|
@@ -54,6 +57,12 @@ module Globalize
|
|
54
57
|
|
55
58
|
protected
|
56
59
|
|
60
|
+
# Sometimes the translation is initialised before a foreign key can be set.
|
61
|
+
def ensure_foreign_key_for(translation)
|
62
|
+
# AR >= 4.1 reflections renamed to _reflections
|
63
|
+
translation[translation.class.reflections.stringify_keys["globalized_model"].foreign_key] = record.id
|
64
|
+
end
|
65
|
+
|
57
66
|
def type_cast(name, value)
|
58
67
|
return value.presence unless column = column_for_attribute(name)
|
59
68
|
|
@@ -36,19 +36,23 @@ module Globalize
|
|
36
36
|
dirty[name][locale] = old
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
39
40
|
def clear_dirty
|
40
41
|
self.dirty = {}
|
41
42
|
end
|
42
43
|
|
43
44
|
def _reset_attribute name
|
44
|
-
|
45
|
-
record.
|
45
|
+
original_value = record.changed_attributes[name]
|
46
|
+
record.send(:clear_attribute_changes, [name])
|
47
|
+
record.send("#{name}=", original_value)
|
48
|
+
record.send(:clear_attribute_changes, [name])
|
46
49
|
end
|
47
50
|
|
48
51
|
def reset
|
49
52
|
clear_dirty
|
50
53
|
super
|
51
54
|
end
|
55
|
+
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
@@ -56,7 +56,11 @@ module Globalize
|
|
56
56
|
klass = self.const_set(:Translation, Class.new(Globalize::ActiveRecord::Translation))
|
57
57
|
end
|
58
58
|
|
59
|
-
klass.belongs_to :globalized_model,
|
59
|
+
klass.belongs_to :globalized_model,
|
60
|
+
class_name: self.name,
|
61
|
+
foreign_key: translation_options[:foreign_key],
|
62
|
+
inverse_of: :translations,
|
63
|
+
touch: translation_options.fetch(:touch, false)
|
60
64
|
klass
|
61
65
|
end
|
62
66
|
end
|
@@ -72,10 +76,10 @@ module Globalize
|
|
72
76
|
private
|
73
77
|
|
74
78
|
# Override the default relation method in order to return a subclass
|
75
|
-
# of ActiveRecord::Relation with custom finder
|
76
|
-
# attributes.
|
79
|
+
# of ActiveRecord::Relation with custom finder and calculation methods
|
80
|
+
# for translated attributes.
|
77
81
|
def relation
|
78
|
-
super.extending!(
|
82
|
+
super.extending!(TranslatedAttributesQuery)
|
79
83
|
end
|
80
84
|
|
81
85
|
protected
|
@@ -116,6 +120,7 @@ module Globalize
|
|
116
120
|
end
|
117
121
|
|
118
122
|
def define_translations_accessor(name)
|
123
|
+
attribute(name, ::ActiveRecord::Type::Value.new) if ::ActiveRecord::VERSION::STRING >= "5.0"
|
119
124
|
define_translations_reader(name)
|
120
125
|
define_translations_writer(name)
|
121
126
|
end
|