「[状況によってsave時に実行するバリデーションを切り替える] (http://qiita.com/kadoppe/items/061d137e6022fa099872)」という記事が役立った。
ではテストではどうすれば良いのか?
.on(:action_name)
を使おう。
app/models/user.rb
class User
validates :name, presence: true, on: :index
validates_length_of :introduction, maximum: 10000. on: :create
end
spec/models/user_spec.rb
require 'spec_helper'
describe User, type: :model do
it { should validate_presence_of(:name).on(:index) }
it { should validate_length_of(:introduction).is_at_most(10000).on(:create) }
end
書き方は Rspec でも Test::Unit でも同じ感じ。
ただし、 validate_numericality_of.on(:index)
は出来なかった。
( GitHubの説明通りに書いてもなぜか NoMethodError )
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
メンター受付