2013-01-03 29 views
0

我正在創建具有附件的對象。我通過分裂一個真正的領域來僞造領域(可能是我的問題的真正根源)。另外,這些做工精細,但我的驗證出現運行我的控制器邏輯不前,當我附上一個文件,我最終得到看起來像這樣的錯誤:爲什麼我的驗證正在運行?

undefined method `match` for nil:Nil at line ... 

是驗證通過回形針觸發?我如何關閉它,或者在驗證運行之前讓我自己的邏輯運行?

我的模型看起來是這樣的:

attr_accessible :zipcode 
has_attached_file :attachment 

#this is the line referred to by the error message 
validates :zipcode, format: { with: /a_meaningful_regex_here/i} 

def initialize 
    zipcode = '-' 
end 
def set_zipcode(params={}) 
    zipcode = "#{params[:zipcode1]}-#{params[:zipcode2]}" 
end 
def zipcode1 
    zipcode.split('-')[0] 
end 
def zipcode2 
    zipcode.split('-')[1] 
end 

我的形式如下:

<%= form_for @foo do |f| %> 
    <%= f.file_field :attachment %> 
    <%= text_field_tag :zipcode1,@foo.zipcode1%> - 
    <%= text_field_tag :zipcode2,@foo.zipcode2%> 
    <%= f.submit %> 
<% end %> 

我的控制器看起來是這樣的:

def create 
    @foo = Foo.new(params[:foo]) 
    @foo.set_zipcode(params) 
    if @foo.save 
    redirect_to @foo 
    else 
    render action: 'new' 
    end 
end 
+0

您是否嘗試在控制器中記錄某些內容,以確保它在驗證之前不會被處理?你確定這個正則表達式應該是這樣寫的嗎?如果不是,請嘗試'/ \ Aa_meaningful_regex_here \ z/i',因爲它似乎是問題來自這裏,如果問題來自於郵政編碼的內容,那麼您將不會有一個無對象,因爲您使用「 - 」初始化它。 。所以我認爲它更可能與正則表達式或其周圍的語法。 – Raindal

回答

0

試着這麼做:

before_validation(:on => :zipcode) { set_zipcode } 
相關問題