0
我在github處詢問,但也會嘗試在此處詢問。 「資源豐富」;-)沒什麼錯的。使用friendly_id 4.User.find('123-foobar')將會返回ID爲123的用戶
我用slug =>「123 foobar」創建了一個用戶。此用戶擁有的200
的ID在做User.find('123-foobar')
,它返回用戶ID爲123,而不是用戶200
這是一個錯誤?
我在github處詢問,但也會嘗試在此處詢問。 「資源豐富」;-)沒什麼錯的。使用friendly_id 4.User.find('123-foobar')將會返回ID爲123的用戶
我用slug =>「123 foobar」創建了一個用戶。此用戶擁有的200
的ID在做User.find('123-foobar')
,它返回用戶ID爲123,而不是用戶200
這是一個錯誤?
find方法(當第一個參數不是符號時)通過主鍵查找。如果你想塞作爲主鍵,然後執行以下操作:
class User < ActiveRecord::Base
set_primary_key :slug
end
這樣做,發現將被塞串查找,並to_param將從塞返回字符串。你的路徑和url助手也應該使用slug。你的外鍵也必須使用slu。。但是,現在,找到將不是找到id。
如果你想在ID爲總是工作和/或不希望的行爲一切變化,但蛞蝓是用戶的備用搜索方法,然後通過下面的搜索:
User.find_by_slug('123-foobar')
您的路線將會正常,但是如果slug位於:id所在的URL中,它將通過params [:id]傳遞給控制器。因此,您可以使用與slug和id相同的URL,控制器和操作,但您的控制器必須找出要搜索的內容。
class User < ActiveRecord::Base
def self.slug?(key)
/^\d*-./ =~ key
end
def self.find_from_key(key)
slug?(key) ? find_by_slug(key) : find(key)
end
end
class UsersController < ApplicationController
def edit
@user = find_from_key(params["id"])
...