Skip to content

Conversation

@seanpdoyle
Copy link

Motivation / Background

The rails#51420 PR was opened as a copy of a prior PR that was closed. In its current state, CI is failing. It also lacks test coverage for Active Record-side support. This PR aims to fill in the gaps in order to make rails#51420 viable for merge.

Detail

Adjustments to the Active Model version of the attribute

The current PR's CI has failures.

To fix them, this PR reverts the changes to User, and instead utilizes
the new Post model class in
activemodel/test/cases/attributes_test.rb.

These changes also propose that assigning an instance of the class specified by the :model
option should support returning that same instance when the attribute is read.

When checking Type::Model#valid_value? (which relies on
#valid_hash?), this PR adds support for models that have been assigned values
to aliased attribute names.

Integrating with Active Record

The latter half of this PR's change adds test coverage for writing and reading :model attributes to TEXT and JSON columns.

First, register the ActiveModel::Type::Model with
ActiveRecord::Type.

Next, add test coverage for writing to and reading from a TEXT column.

Include handling writing and reading of :model attributes that
themselves contain nested :model attributes.

Checklist

Before submitting the PR make sure the following are checked:

  • This Pull Request is related to one change. Unrelated changes should be opened in separate PRs.
  • Commit message has a detailed description of what changed and why. If this PR fixes a related issue include it in the commit message. Ex: [Fix #issue-number]
  • Tests are added or updated if you fix a bug or add a feature.
  • CHANGELOG files are updated for the changed libraries if there is a behavior change or additional feature. Minor bug fixes and documentation changes should not be included.

These lines are causing [CI failures][].

To fix them, we can revert the changes to `User`, and instead utilize
the new `Post` model class in
`activemodel/test/cases/attributes_test.rb`.

[CI failures]: https://buildkite.com/rails/rails/builds/105947
When assigning an instance of the class specified by the `:model`
option, return that same instance.
When checking `Type::Model#valid_value?` (which relies on
`#valid_hash?`), add support for models that have been assigned values
to aliased attribute names.
First, register the `ActiveModel::Type::Model` with
`ActiveRecord::Type`.

Next, add test coverage for writing to and reading from a `TEXT` column.

Include handling writing and reading of :model attributes that
themselves contain nested :model attributes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant