私のRails5.1.4プロジェクトにはStationモデルがあり、いくつかの保存されたレコードがあります。ActiveRecordで変更を加えずに保存されたレコードを検証する方法は?
class Station < ApplicationRecord
end
> Station.first
# => #<Station:0x0055f5ca447d78 id: 1, name: nil>
次に、新しい検証(名前の存在チェック)を追加しました。
class Station < ApplicationRecord
with_options on: [:publishing] do
# added new validation
validates :name, presence: true
end
end
ここで、検証すると!属性を変更せずに呼び出されるメソッド。検証!メソッドがtrueを返しました。
> reload!
> station = Station.first
# => #<Station:0x0055f5cf4b6228 id: 1, name: nil>
> station.validate!(context: :publishing) # without attributes changing
# => true
# expected ActiveRecord::RecordInvalid raising.
ここに私の1つの問題があります。
私はActiveRecordがActiveRecord::RecordInvalid
になると予想しました。これは、nameの存在確認が追加されたためです。
どうすればいいですか?
参考にしてください。
あなたは既存のレコードの状況を処理していますか?あなたのコメントのために – Nithin
ありがとう!いいえ、私はそうではありません。ちょうど記録を取って、validateを呼び出してください!メソッド –
これは再現できません。 Rails 5.1.4、期待どおりに動作しています。 – kolas