User モデルに検証を追加しようとしています:
class User < ActiveRecord::Base
validates :first_name, :last_name, :email, :password, presence: true
検証が行われると、「削除」できなくなります...is_delete
フィールドをに設定して、ユーザーをソフト削除してい1
ます。これは、実際には:password
. 代わりに、入力されたパスワードをソルトおよびハッシュし、それぞれのフィールド (hashed_password & salt) に保存するコールバックがあります。
それらを検証しようとすると、作成が妨げられます。
class User < ActiveRecord::Base
validates :first_name, :last_name, :email, :hashed_pasword, :sal, presence: true
フォームが送信されたときに存在しないため、これは理にかなっています。
これを解決するにはどうすればよいですか?
コントローラーで更新 ...
def delete_user
user = User.find( params[:id] )
# if !user
# flash[:error] = "Problem deleting user"
# redirect_to controller:'admin', action:'index'
# end
if ( user.update( is_deleted: 1) )
flash[:notice] = "User successfully deleted"
else
flash[:error] = "Problem deleting user"
end
redirect_to controller:'admin', action:'index'
end
更新
以下のシドニーが提案する構文を使用しようとしていますが、ここにエラーが表示されます。this を使用してvalidates :password, length: { in: 6..20}, on: [:update, :create]
からユーザーを「削除」すると、次のようになります。
/Users/ME/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:393: syntax error, unexpected '[', expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END ...ue && (validation_context == :[:update, :create]) ... ^ /Users/ESL/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:402: syntax error, unexpected keyword_end, expecting ')' /Users/ESL/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:429: syntax error, unexpected keyword_end, expecting ')' /Users/ESL/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:430: syntax error, unexpected end-of-input, expecting ')'