Don't use ActiveModel#has_attribute? due to Rails 4 bug #144
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The end result is a confusing error: "ActiveModel::MissingAttributeError: missing attribute: state" due to the following bug in Rails 4:
In Rails 5:
If code loops through model.attribute_names to display selected values, the error results:
With the current pull request:
The bug can be traced to a bug in Rails 4's has_attribute? method which adds the attribute name to the list even if it was not selected. To support this, since this is the current stable version, we can use attribute_names.include? instead of has_attribute?