我想跳過控制器功能的一些模型驗證。我做這樣的如何在rails中跳過特定函數的模型驗證?
型號:
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
我不想被保存它:驗證=>假的。我想跳過contacts_callback函數的名稱和phoneno驗證。但它不起作用。
它在控制器中給出錯誤 - 未定義的局部變量或用於contacts_callback的方法`skip_method_2'。我已經在我的模型
你只宣佈skip_method_2爲attr_accessible。你有沒有在attr_accessor中聲明它? – jvnill 2013-02-19 07:23:06
是的,我也使用attr_writer,但它顯示控制器中的錯誤 未定義的局部變量或方法'skip_method_2'爲contacts_callback – 2013-02-19 07:24:53
不,它應該是attr_accessor因爲你需要寫入它,你需要讀它 – jvnill 2013-02-19 07:27:12