我在路由中使用字符串作爲id(例如resource /:id),但id也可以是'new'(我的Controller中的一種方法),而不是顯示id =新的,指導創造新的資源。如何限制用戶在創建新資源時選擇id = new?Rails:防止ID與方法衝突
0
A
回答
2
我能想到的三種解決方案,您可以設置的,而不是ID
第一個字符串:設定的ID和屬性名稱的組合,在模型中添加
def to_param
return [self.id, self.attr_name].join('-')
end
第二:阻止用戶在您的控制器中添加任何操作方法(這是更安全的t漢限制只有 「新」 的方法,你可以在將來添加其他get方法)
validates :attr_name, exclusion: { in: YourController.action_methods.to_a }
三: 使用friendly_id寶石
+0
非常感謝!我非常感謝你給出了示例代碼。 –
2
嘗試使用模型exclusion
驗證,http://guides.rubyonrails.org/active_record_validations.html#exclusion
1
在config.rb
,改變你的路線:
resources :resources
你會得到你需要的路線。我有一種感覺,你很快就會需要一些與它一起出現的,如create
和edit
。
編輯:讓生活更簡單,在你的模型:
def to_param
return self.my_string_id
end
哪裏my_string_id
是您正在使用的URL作爲標識符的字符串。這將使URL使用:id參數而不是數字ID。
參見:http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default
相關問題
- 1. 防止UUID衝突
- 2. 刪除iframe並防止與庫衝突
- 3. 防止jQuery點擊()衝突
- 4. Javascript與string.replace方法衝突
- 5. 防止jQuery的原型/插件方法之間的衝突
- 6. 在Force.com站點上阻止common.css以防止與Bootstrap.css衝突?
- 7. 如何合併表並防止ID衝突
- 8. 如何防止鏈輪代碼衝突Rails 3.1
- 9. 防止Graphics2D中的矩形衝突?
- 10. 衝突防止顯示背景視頻
- 11. 防止PHP中的會話衝突
- 12. 如何防止資產管道與我的/.../.../.../images URL衝突?
- 13. jquery驗證與防止雙重提交的腳本衝突
- 14. Unity3D防止與鼠標事件的衝突
- 15. 我可以防止DotNetNuke css與其他框架衝突嗎?
- 16. 如何防止「返回false」;在與ASP.NET MVC衝突的AjaxSubmit RedirectToAction
- 17. 如何防止JavaScript文件與另一個文件衝突?
- 18. 防止touchmove事件與jquery UI對話框的滾動衝突
- 19. 如何防止Django燈具與現有數據發生衝突
- 20. 名稱與類方法衝突
- 21. Java - 添加方法與異常衝突
- 22. Selenium + junit - 與@Rule和@After方法衝突
- 23. Rails - WillPaginate衝突
- 24. 防病毒與程序衝突
- 25. 防止WordPress的JavaScript衝突的良好做法?
- 26. 在Objective-C中,如何防止類別方法中的名稱衝突?
- 27. Spring bean id衝突
- 28. css類ID衝突
- 29. web api url與ravenDb Id格式衝突
- 30. Telerik DatePicker ID與局部視圖衝突
添加一個':的before_filter:check_new,:只=> [ :新]'並防止路由到新的行動。 –