2

コントローラー関数のモデル検証をスキップしたい。私はこのようにやっています

モデル :

attr_accessible :skip_method_2
validates :name,  presence: true, length: { maximum: 50 }, :unless => :skip_method_2
VALID_PHONE_REGEX = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
validates :phoneno, presence: true,uniqueness: { case_sensitive: false, :scope => :user_id}, format: { with: VALID_PHONE_REGEX }, :unless => :skip_method_2

コントローラー:

def contacts_callback
 @contacts = request.env['omnicontacts.contacts']   
 @contacts.each do |contact|
   next if current_user.contacts.exists?(:email => "#{contact[:email]}")
   contact1 = current_user.contacts.new(:skip_method_2 => true)
   contact1.name = contact[:name] 
   contact1.email = contact[:email]
   contact1.group = "Others"
   contact1.save
 end
  redirect_to "/contact"
end

:validation => false で保存したくありません。contact_callback 関数の name と phoneno の検証をスキップしたい。しかし、それは機能していません。

コントローラーでエラーが発生します-contacts_callbackの未定義のローカル変数またはメソッド「skip_method_2」。私のモデルではすでにattr_accessibleについて言及しました

4

1 に答える 1

2

変化するvalidates :name, presence: true, length: { maximum: 50 }, :unless => :skip_method_2

validates :name, presence: true, length: { maximum: 50 }, :unless => lambda {|x| x.skip_method_2}

この回答もチェックしてください

于 2013-02-19T08:09:21.697 に答える