rails/railties
Sean Doyle e85a3ec624
Change has_secure_token default to on: :initialize
Follow-up to [#47420][]

With the changes made in [#47420][], `has_secure_token` declarations can
be configured to execute in an `after_initialize` callback. This commit
proposed a new Rails 7.1 default: generate all `has_secure_token` values
when their corresponding models are initialized.

To preserve pre-7.1 behavior, applications can set
`config.active_record.generate_secure_token_on = :create`.

By default, generate the value when the model is initialized:

```ruby
class User < ApplicationRecord
  has_secure_token
end

record = User.new
record.token # => "fwZcXX6SkJBJRogzMdciS7wf"
```

With `config.active_record.generate_secure_token_on = :create`, generate
the value when the model is created:

```ruby
 # config/application.rb
config.active_record.generate_secure_token_on = :create

 # app/models/user.rb
class User < ApplicationRecord
  has_secure_token on: :create
end

record = User.new
record.token # => nil
record.save!
record.token # => "fwZcXX6SkJBJRogzMdciS7wf"
```

[#47420]: https://github.com/rails/rails/pull/47420

Co-authored-by: Hartley McGuire <skipkayhil@gmail.com>
2023-09-01 20:17:22 +00:00
..
bin
exe
lib Change has_secure_token default to on: :initialize 2023-09-01 20:17:22 +00:00
test Optimize ActiveRecord::LogSubscriber#query_source_location 2023-08-31 11:56:55 +02:00
.gitignore Install JavaScript packages before run test 2019-02-11 09:58:08 +09:00
CHANGELOG.md Generate config.autoload_lib(...) for new apps 2023-08-25 09:22:25 +02:00
MIT-LICENSE Remove Copyright years (#47467) 2023-02-23 11:38:16 +01:00
railties.gemspec Fix chmod race condition when generating key 2023-05-11 16:29:26 -04:00
Rakefile Require shellwords where it is used 2022-01-06 00:19:11 +00:00
RDOC_MAIN.md Fix list item numbering on API docs main page [ci-skip] 2023-08-17 16:22:16 -05:00
README.rdoc 🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00

= Railties -- Gluing the Engine to the \Rails

Railties is responsible for gluing all frameworks together. Overall, it:

* handles the bootstrapping process for a \Rails application;

* manages the +rails+ command line interface;

* and provides the \Rails generators core.

== Download

The latest version of Railties can be installed with RubyGems:

* gem install railties

Source code can be downloaded as part of the \Rails project on GitHub

* https://github.com/rails/rails/tree/main/railties

== License

Railties is released under the MIT license:

* https://opensource.org/licenses/MIT

== Support

API documentation is at

* https://api.rubyonrails.org

Bug reports can be filed for the Ruby on \Rails project here:

* https://github.com/rails/rails/issues

Feature requests should be discussed on the rails-core mailing list here:

* https://discuss.rubyonrails.org/c/rubyonrails-core