這裏是什麼原因導致的錯誤示例:Friendly_Id和保留字 - 如何替換保留字?
ruby-1.9.2-p290 :004 > Post.new(title: "new").save!
(0.3ms) BEGIN
post Load (0.3ms) SELECT `posts`.* FROM `posts` WHERE (`slug` = 'new' OR `slug` LIKE 'new--%') ORDER BY LENGTH(`slug`) DESC, `slug` DESC LIMIT 1
(0.3ms) SELECT 1 FROM `posts` WHERE `posts`.`lsi_post_id` = BINARY '' LIMIT 1
(0.1ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Friendly is reserved
我想提出一些在Post模型,也許替換爲新詞「 - 」或類似的規定,但我不知道從哪兒開始。
謝謝!
我發佈了我的解決方案...您的解決方案要簡單得多。 –
他們都工作=)。但也許如果你有一個reserved_words,你必須維護它們,每個新的FriendlyID版本都可能會添加/刪除單詞。將Id附加到名稱上會使slu always始終是唯一的(手指交叉)。友好的保留字有助於確保您不會使用動作詞。感謝帖子! –
這可能需要多一點思考,friendly_id使用'before'驗證,所以ID在生成slug時不可用。如果你想這樣做,你可以通過觀察者進行'雙保存'來更新ID或者簡單地避免在自定義slug方法中使用ID。 –