2016-07-22 54 views
0

有一些詞永遠不會顯示在我的web應用程序中的任何字符串屬性(照片[:標題],用戶[:名稱]等)。下面的代碼工作在我的控制器:把這個簡單的控制器代碼變成一個方法

PhotosController 
    def create 
    @photo = current_user.photos.build(photo_params) 
    if @photo.title.include? "foo" 
     @photo = nil 
     flash[:warning] = "Photo failed!, restricted words" 
     redirect_to new_photo_path 
    else 
     if @photo.save 
     flash[:success] = "Photo created!" 
     redirect_to new_photo_path 
     else 
     flash[:warning] = "Photo failed!" 
     redirect_to new_photo_path 
     end 
    end 
end 

很顯然,我不希望有無休止地重複自己在我的控制器,每個字符串屬性。我需要創建一個可以放在application.rb中並​​用於所有控制器的方法。

+0

你可以做的第一件事就是讓在車型名稱的驗證,所有的驗證應始終在模型完成,從來沒有在控制器。 –

回答

1
class Photo 
    validate :title_with_foo 

    def title_with_foo 
     errors.add(:base, 'Photo failed!, restricted word') unless title.include? "foo" 
    end 
    end 

添加模型級別的驗證像上面

+0

謝謝。我現在在Rails指南中看到了這一點。 http://guides.rubyonrails.org/active_record_validations.html#validates-它看起來像我可以使用[:字段]的例子幹,所以我不需要單獨創建這些驗證。另外,你的答案應該是'如果',而不是'除非'...我正在努力實現[:fields]示例... –

相關問題