2014-05-19 39 views
0

當發送參數不在允許列表中(開發中)時,有沒有辦法顯示錯誤?強參數:當發送參數不在允許列表中時顯示錯誤(正在開發中)

我經常忘記將參數添加到列表中,而不是首先注意到它。

+0

這很含糊。至少,你應該讓我們知道你在說什麼編程語言。可能還提供了一個例子或兩個... – twalberg

+0

對不起,我選擇強參數標記會讓它變得很明顯我正在談論Ruby on Rails。我現在把它添加爲標籤。 –

回答

1

我不認爲StrongParameters已經這樣做了,但你可以自由地做到這一點。例如:

def object_params 
    permitted_params = [:a, :b, :c] 
    params.require(:some_object_name).permit(*permitted_params) 
    if Rails.env.development? && permitted_params.exclude?(some_param) 
    # TODO: Raise an exception or log an error or whatever you want to do here. 
    end 
end 

UPDATE

我發現了strong_parameters寶石(默認情況下,包括滑軌4)確實能夠在這裏有一定的靈活性!請參閱自述文件的以下部分:https://github.com/rails/strong_parameters#handling-of-unpermitted-keys。因此,在開發環境中,未經許可的密鑰應該已被記錄。如果你願意,你可以改變它來做一個加註。涼!如果這不是你想要的,並且上面的代碼不是那麼那麼你可能會在你的整個應用程序中使用未經許可的密鑰來做一些特殊的事情來猴子補丁或者分發這個gem。

+0

我不確定我是否理解你的意思。我想有一個機制阻止我發送不在白名單中的參數。所以如果我添加一個新的屬性,然後添加一個表單輸入併發送它,那麼屏幕上會出現警告。 –

+0

通常,驗證將確保所有必需的屬性在表單中正確填寫。因此,如果您尚未將屬性添加到允許的參數列表並提交表單,則表單提交會抱怨沒有爲該屬性輸入任何內容(因爲如果未列出對象,它不會被設置在對象中在允許的屬性列表中)。這有幫助嗎? – pdobb

+0

或者如果你不想驗證,那麼你可以使用我的上面的代碼示例來提出一種不同的顯示錯誤的方法 - 也許通過設置flash [:error]',然後,如果存在閃存錯誤,跳過表單驗證或任何你想做的事情,以確保表單提交失敗。 – pdobb