1
0
Fork 0
mirror of https://github.com/thoughtbot/factory_bot.git synced 2022-11-09 11:43:51 -05:00
thoughtbot--factory_bot/lib/factory_bot
Daniel Colson 5a3247dd8c Avoid stubbing id for records without primary key
Fixes #1305

Before Rails 6 when the build_stubbed strategy assigned an id on a
record without a primary key column, the `id=` method would no-op, and
the record would end up looking like a new_record (i.e. `new_record?`
would return true because the id was nil).

This problem surfaced because of a [change in Rails 6][rails], which
caused `id=` to raise a potentially confusing
`ActiveModel::MissingAttributeError: can't write unknown attribute ''`
for records without a primary key column.

Since build_stubbed stubbed was calling `id=` for all instances,
regardless of whether they had primary keys, it was raising the above
error.

To avoid this error, we check whether the instance has a primary_key
defined before setting the id.

We also changed `persisted?` and `new_record?` to be less dependent on
the id. That way those methods will work as expected for records without
primary keys.

[rails]: b6828fc915

Co-authored-by: Jesse Bailey <jbailey117@gmail.com>
2019-07-19 15:18:11 -04:00
..
attribute Remove static attributes 2018-09-14 19:27:13 +00:00
declaration Deprecate and move to Internal sequence methods 2019-06-04 19:02:51 -04:00
decorator Inline disabling Style/MethodMissing Cop 2018-11-12 15:01:23 -08:00
strategy Avoid stubbing id for records without primary key 2019-07-19 15:18:11 -04:00
syntax Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
aliases.rb [Rubocop] Style Cop Offenses (#1208) 2018-10-07 18:02:54 -04:00
attribute.rb Rubocop: Fix Style/StringLiterals Offenses (#1216) 2018-10-07 21:45:51 -04:00
attribute_assigner.rb adjust style 2019-04-11 17:34:36 -04:00
attribute_list.rb Arrest lines of an unsavory length 2018-12-12 11:05:13 -05:00
callback.rb Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
callbacks_observer.rb Replace 'girl' with 'bot' everywhere (#1051) 2017-10-20 15:20:28 -04:00
configuration.rb Allow inline sequences in traits to have same name 2019-02-15 17:10:27 -05:00
declaration.rb Rubocop: Fix Style/StringLiterals Offenses (#1216) 2018-10-07 21:45:51 -04:00
declaration_list.rb [Rubocop] Style Cop Offenses (#1208) 2018-10-07 18:02:54 -04:00
decorator.rb Inline disabling Style/MethodMissing Cop 2018-11-12 15:01:23 -08:00
definition.rb Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
definition_hierarchy.rb Replace 'girl' with 'bot' everywhere (#1051) 2017-10-20 15:20:28 -04:00
definition_proxy.rb Name first arg of DefinitionProxy#method_missing 2019-04-26 12:47:12 -04:00
errors.rb Raise helpful error block given to association 2018-10-28 19:12:34 -04:00
evaluation.rb Rubocop: Fix Style/StringLiterals Offenses (#1216) 2018-10-07 21:45:51 -04:00
evaluator.rb Only undefine methods that were previously defined 2019-03-22 10:30:08 -04:00
evaluator_class_definer.rb Replace 'girl' with 'bot' everywhere (#1051) 2017-10-20 15:20:28 -04:00
factory.rb Deprecate and move to Internal factories methods 2019-06-04 19:39:04 -04:00
factory_runner.rb Deprecate and move to Internal factories methods 2019-06-04 19:39:04 -04:00
find_definitions.rb Rubocop: Fix Style/StringLiterals Offenses (#1216) 2018-10-07 21:45:51 -04:00
internal.rb Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
linter.rb Add option for verbose linting 2018-11-27 12:04:38 -05:00
null_factory.rb Fix assorted RuboCop spacing volations (#1203) 2018-09-27 21:35:05 -04:00
null_object.rb [Rubocop] Lint Cop Offenses (#1207) 2018-10-05 14:54:08 -04:00
registry.rb Raise KeyError instead of ArgumentError in Registry 2018-12-16 22:25:04 -05:00
reload.rb Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
sequence.rb Fix assorted RuboCop spacing volations (#1203) 2018-09-27 21:35:05 -04:00
strategy_calculator.rb Deprecate/Move strategies and callback methods 2019-06-04 20:09:14 -04:00
strategy_syntax_method_registrar.rb [Rubocop] Performance Cop Offenses (#1209) 2018-10-04 21:07:56 -04:00
syntax.rb Rubocop: Fix Style/StringLiterals Offenses (#1216) 2018-10-07 21:45:51 -04:00
syntax_runner.rb Replace 'girl' with 'bot' everywhere (#1051) 2017-10-20 15:20:28 -04:00
trait.rb Improve error message for resolving invalid traits 2019-02-22 16:08:38 -05:00
version.rb Bump version to 5.0.2 [ci skip] 2019-02-22 16:18:39 -05:00