default_value_for 3.0.3 → 3.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d622d97fecd784ed09f1202e354a721fa02a7700
4
- data.tar.gz: c0ee0dc2feeebeee11e63b246fe77a4e46260200
3
+ metadata.gz: 43f0cd7054b4c0efa902af18ce953a8acf6bb116
4
+ data.tar.gz: 21bfb3f957a7af4c6ce39b25678bc66c1c8ba1da
5
5
  SHA512:
6
- metadata.gz: 68da2ccf0e955ad0c7c4daa68fea6607d0ba3da8521e7ecb5bcc0d42d750be6ec1b5ab93767939a74459ef6b1b7efa16c8c81c74036e0de2ac2cff88093b0ee8
7
- data.tar.gz: 67c18c88f8f57429cf502f7c69efe38883ed286c8791e258bd3fc59fdb053814097f68ead33494a4ce00d76e3f672b2f2b9c8e599a43e38414fc4fb9ed5d0474
6
+ metadata.gz: 4a8535cf9d1197a5ae0a8f10681aee999acd6b95b54e11cb162310226d619f308adf5d4c1b2efc3994810f0f3dd705430d7fad4a43ec65f0f4be4b483aa58fc4
7
+ data.tar.gz: 7ba0a5fef07ba66e64d6260701ad8c6463be0703dc9677e31e29c05848088f0990ea15b7eccf2cd7c93d2ace569f506e676677257d772744ab25780f226c8982
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{default_value_for}
3
- s.version = "3.0.3"
3
+ s.version = "3.0.5"
4
4
  s.summary = %q{Provides a way to specify default values for ActiveRecord models}
5
5
  s.description = %q{The default_value_for plugin allows one to define default values for ActiveRecord models in a declarative manner}
6
6
  s.email = %q{software-signing@phusion.nl}
@@ -156,12 +156,18 @@ module DefaultValueFor
156
156
 
157
157
  connection_default_value_defined = new_record? && respond_to?("#{attribute}_changed?") && !__send__("#{attribute}_changed?")
158
158
 
159
- column = self.class.columns.detect {|c| c.name == attribute}
160
- attribute_blank = if column && column.type == :boolean
161
- attributes[attribute].nil?
162
- else
163
- attributes[attribute].blank?
164
- end
159
+ attribute_blank = if attributes.has_key?(attribute)
160
+ column = self.class.columns.detect { |c| c.name == attribute }
161
+ if column && column.type == :boolean
162
+ attributes[attribute].nil?
163
+ else
164
+ attributes[attribute].blank?
165
+ end
166
+ elsif respond_to?(attribute)
167
+ send(attribute).nil?
168
+ else
169
+ instance_variable_get("@#{attribute}").nil?
170
+ end
165
171
  next unless connection_default_value_defined || attribute_blank
166
172
 
167
173
  # allow explicitly setting nil through allow nil option
data/test.rb CHANGED
@@ -49,6 +49,7 @@ ActiveRecord::Base.establish_connection(
49
49
  ActiveRecord::Base.connection.create_table(:users, :force => true) do |t|
50
50
  t.string :username
51
51
  t.integer :default_number
52
+ t.text :settings
52
53
  end
53
54
 
54
55
  ActiveRecord::Base.connection.create_table(:books, :force => true) do |t|
@@ -233,6 +234,14 @@ class DefaultValuePluginTest < TestCaseClass
233
234
  assert_equal 'hi', Book.new.hello
234
235
  end
235
236
 
237
+ def test_works_on_attributes_that_only_have_writers
238
+ Book.class_eval do
239
+ default_value_for :hello, "hi"
240
+ attr_writer :hello
241
+ end
242
+ assert_equal 'hi', Book.new.instance_variable_get('@hello')
243
+ end
244
+
236
245
  def test_doesnt_conflict_with_overrided_initialize_method_in_model_class
237
246
  Book.class_eval do
238
247
  def initialize(attrs = {})
@@ -353,6 +362,14 @@ class DefaultValuePluginTest < TestCaseClass
353
362
  assert_equal 1, Book.all.first.number
354
363
  end
355
364
 
365
+ def test_works_with_stored_attribute_accessors_when_initializing_value_that_does_not_allow_nil
366
+ User.store :settings, :accessors => :bio
367
+ User.default_value_for :bio, :value => 'None given', :allows_nil => false
368
+
369
+ user = User.create!(:bio => 'This is a bio')
370
+ assert_equal 'This is a bio', user.bio
371
+ end
372
+
356
373
  if ActiveRecord::VERSION::MAJOR == 3
357
374
  def test_constructor_ignores_forbidden_mass_assignment_attributes
358
375
  Book.class_eval do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: default_value_for
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hongli Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-02 00:00:00.000000000 Z
11
+ date: 2018-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord