Skip to content

Commit fd615de

Browse files
committed
fix: Do not fallback for local accessors
1 parent a8ea23e commit fd615de

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This gem uses PostgreSQL's JSONB datatype and ActiveRecord models to translate m
1010

1111
## Features
1212

13-
- [x] `v0.1.2` It works
13+
- [x] `v0.1.3` Fix redundant fallbacks when translation is nil
1414

1515
## Requirements
1616

@@ -71,10 +71,12 @@ It always falls back to default locale
7171
# Behavior with fallbacks enabled
7272
p = Page.new(title_en: 'English title')
7373
I18n.with_locale(:de) { p.title } # => 'English title' (falls back to English)
74+
p.title_de # => nil
7475

7576
# Behavior with empty string
7677
p = Page.new(title_en: 'English title', title_de: '')
7778
I18n.with_locale(:de) { p.title } # => 'English title' (falls back since German is empty)
79+
p.title_de # => ''
7880
```
7981

8082
### Assigning a Hash Directly

lib/awesome_jsonb_translate/active_record.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def define_translation_accessors(attr_name)
3333

3434
def define_translation_reader_for_locale(attr_name, locale)
3535
define_method("#{attr_name}_#{locale}") do
36-
read_translation(attr_name, locale)
36+
read_translation_without_fallback(attr_name, locale)
3737
end
3838
end
3939

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module AwesomeJsonbTranslate
4-
VERSION = '0.1.2'
4+
VERSION = '0.1.3'
55
end

spec/awesome_jsonb_translate_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,15 @@ class Page < ActiveRecord::Base
8080
expect(page.title).to eq('English title')
8181
end
8282
end
83+
84+
it 'does not fall back when translation is accessed directly' do
85+
page = Page.new(title_en: 'English title', title_de: nil)
86+
87+
I18n.with_locale(:de) do
88+
expect(page.title_en).to eq('English title')
89+
expect(page.title_de).to be_nil
90+
end
91+
end
8392
end
8493

8594
describe 'querying' do

0 commit comments

Comments
 (0)