Model Missing Attributes, SQLite Immediate Transactions, and CVV/CVC Parameter Filtering by default | This Week in Rails
ActiveSupportに関する変更です
ActiveSupportにはRubyのHashクラスを拡張してインスタンスメソッドとして except が実装されています
このプルリクエストでは、その except メソッドを削除しています
理由は、Rails 8.0 は Ruby 3.1 以降のみが対象となり、かつ、 同名で同じ動作をするメソッドがRuby3.1でHashクラスに実装されているためです
ActiveSupportで except メソッドを実装しておく必要がなくなったため、削除しています
ActiveModelに関する変更です
attribute_writer_missing というメソッドが実装されました
今回は書き込み時のケースに対応したものです
具体例は次のとおりです
code:rb
class Triangle
include ActiveModel::AttributeAssignment
attr_accessor :adjacent, :opposite
def attribute_writer_missing(name, value)
Rails.logger.warn "Tried to assign to unknown attribute #{name}" end
end
triangle = Triangle.new
triangle.assign_attributes(height: 10) # => Logs "Tried to assign to unknown attribute 'height'"
railtiesに関する変更です
filter_parametersのデフォルトに cvv と cvc が追加されました
filter_parametersについては過去のエピソードでも取り上げましたね
ログに出力したくないパラメータをフィルタで除外するのに用います
cvv は Card Verification Value の略で、cvc は Card Verification Code の略ですね
セキュリティコードとはクレジットカード・デビットカード不正使用を防止する為の特殊コード1。マスターカードではCard Verification Code (CVC)、VISAではCard Verification Value (CVVまたはCV2)とも呼ぶ。 このプルリクエストは、新しいRailsアプリケーションをつくるときのデフォルト値に関する変更なので、既存のアプリケーションには影響ありません