globalize2 0.2.0 → 0.2.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{globalize2}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sven Fuchs, Joshua Harvey, Clemens Kofler"]
12
- s.date = %q{2010-04-22}
12
+ s.date = %q{2010-04-29}
13
13
  s.description = %q{Rails I18n: de-facto standard library for ActiveRecord data translation}
14
14
  s.email = %q{joshmh@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -125,7 +125,12 @@ module Globalize
125
125
  def find_first_by_translated_attr_and_locales(name, value)
126
126
  query = "#{translated_attr_name(name)} = ? AND #{translated_attr_name('locale')} IN (?)"
127
127
  locales = Globalize.fallbacks(locale || I18n.locale).map(&:to_s)
128
- find(:first, :joins => :translations, :conditions => [query, value, locales])
128
+ find(
129
+ :first,
130
+ :joins => :translations,
131
+ :conditions => [query, value, locales],
132
+ :readonly => false
133
+ )
129
134
  end
130
135
 
131
136
  def translated_attr_accessor(name)
@@ -149,6 +154,14 @@ module Globalize
149
154
  @globalize ||= Adapter.new self
150
155
  end
151
156
 
157
+ def attributes
158
+ self.attribute_names.inject({}) do |attrs, name|
159
+ attrs[name] = read_attribute(name) ||
160
+ (globalize.fetch(I18n.locale, name) rescue nil)
161
+ attrs
162
+ end
163
+ end
164
+
152
165
  def attributes=(attributes, *args)
153
166
  if attributes.respond_to?(:delete) && locale = attributes.delete(:locale)
154
167
  self.class.with_locale(locale) { super }
@@ -157,6 +170,10 @@ module Globalize
157
170
  end
158
171
  end
159
172
 
173
+ def attribute_names
174
+ translated_attribute_names.map(&:to_s) + super
175
+ end
176
+
160
177
  def available_locales
161
178
  translations.scoped(:select => 'DISTINCT locale').map(&:locale)
162
179
  end
@@ -13,7 +13,7 @@ module Globalize
13
13
  end
14
14
 
15
15
  self.connection.create_table(translation_table_name) do |t|
16
- t.references self.table_name.singularize
16
+ t.references table_name.sub(/^#{table_name_prefix}/, "").singularize
17
17
  t.string :locale
18
18
  fields.each do |name, type|
19
19
  t.column name, type
@@ -21,7 +21,11 @@ module Globalize
21
21
  t.timestamps
22
22
  end
23
23
 
24
- self.connection.add_index(translation_table_name, "#{self.table_name.singularize}_id", :name => translation_index_name)
24
+ self.connection.add_index(
25
+ translation_table_name,
26
+ "#{table_name.sub(/^#{table_name_prefix}/, "").singularize}_id",
27
+ :name => translation_index_name
28
+ )
25
29
  end
26
30
 
27
31
  def translation_index_name
@@ -84,4 +84,13 @@ class TranslatesTest < ActiveSupport::TestCase
84
84
  post.subject = 'title'
85
85
  assert_equal 'title', post.subject
86
86
  end
87
+
88
+ test "find_by_xx records have writable attributes" do
89
+ Post.create :subject => "change me"
90
+ p = Post.find_by_subject("change me")
91
+ p.subject = "changed"
92
+ assert_nothing_raised(ActiveRecord::ReadOnlyRecord) do
93
+ p.save
94
+ end
95
+ end
87
96
  end
@@ -68,7 +68,7 @@ class ActiveRecordTest < ActiveSupport::TestCase
68
68
  test "update_attributes fails with invalid values" do
69
69
  post = Post.create(:subject => 'foo', :content => 'bar')
70
70
  assert !post.update_attributes(:subject => '')
71
- assert_nil post.reload.attributes['subject']
71
+ assert_not_nil post.reload.attributes['subject']
72
72
  assert_equal 'foo', post.subject
73
73
  end
74
74
 
@@ -442,6 +442,22 @@ class ActiveRecordTest < ActiveSupport::TestCase
442
442
  User.expects(:reflect_on_all_validations => validations)
443
443
  assert_equal [:name], User.required_attributes
444
444
  end
445
+
446
+ test "attribute_names returns translated and regular attribute names" do
447
+ Post.create :subject => "foo", :content => "bar"
448
+ assert_equal Post.last.attribute_names.sort, %w[blog_id content id subject]
449
+ end
450
+
451
+ test "attributes returns translated and regular attributes" do
452
+ Post.create :subject => "foo", :content => "bar"
453
+ assert_equal Post.last.attributes.keys.sort, %w[blog_id content id subject]
454
+ end
455
+
456
+ test "to_xml includes translated fields" do
457
+ Post.create :subject => "foo", :content => "bar"
458
+ assert Post.last.to_xml =~ /subject/
459
+ assert Post.last.to_xml =~ /content/
460
+ end
445
461
  end
446
462
 
447
463
  # TODO error checking for fields that exist in main table, don't exist in
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sven Fuchs, Joshua Harvey, Clemens Kofler
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-22 00:00:00 +02:00
17
+ date: 2010-04-29 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20