2016-11-03 129 views
1

我想在創建記錄時根據特定字段顯示彈出式消息/ update some other table alsoRAILS:彈出/警告/消息before_create

有沒有辦法使用驗證或操作鏈接來做到這一點?

我想要做的事象下面這樣:

validates :fieldc, if: :should_update?, message: "Update fielda and fieldb in tablex also" 

bef should_update? 
    fieldc == "req_value" 
end 

我相信上面的驗證將無法正常工作。但我想顯示彈出窗口,如果fieldc == req_value和記錄應該創建。有沒有辦法做到這一點?

謝謝。

編輯: 我可以這樣做嗎?

after_create :update_tablex 
    def update_tablex 
     if self.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     else 
     flash[:notice] = 'Record updated successfully.' 
     end 
    end 


def should_update? 
    fieldc == "req_value" 
end 

但是蔭仍然得到NameError (undefined local variable or method 'flash' for #)

+0

能否請您更清楚了嗎?你的形式是什麼意思? – Mounika

+0

保持簡單,是否有辦法在rails模塊中顯示彈出消息來執行創建新操作? – Mounika

回答

1

這真是一個控制器問題,應在控制,而不是模型來解決。該模型從不負責控制所查看內容的邏輯以及工作流程的進展情況。最好的辦法是設置一個顯示他們需要做什麼的Flash消息,並將其重定向到tablex編輯視圖。

在創建方法......

def create 
    ... 
    if @record.save 
    if @record.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     redirect_to edit_tablex_path(@record.tablex) 
    else 
     flash[:notice] = 'Record updated successfully.' 
     redirect_to @record 
    end 
    else 
    render :new 
    end 
end 
+0

這是一個非常可靠的方法 –

+0

我收到以下錯誤:'NameError(未定義的局部變量或方法'閃存'爲#)' – Mounika

+0

對不起,在我的第五行中忘記了一個等號。我編輯了答案。 – SteveTurczyn