2011-01-22 77 views
1

在状态机更新动作我正在开发一个应用程序,是非常相似的状态机。随机URL像Rails应用程序

后创建一个“人”,也有保留为空属性,必须通过“更新”行动尚未填补。

我在模型中定义的“unique_token”功能,使创建和更新的人的时候,一个新的唯一的字符串分配。

后来,我定义为“/:unique_token”在我的路线“编辑”和“更新”行动。

后来,在我的控制器,用于 “编辑” 和 “UDPATE”,我定义:

@person = Person.find_by_unique_token(PARAMS [:unique_token])

BUT!

我得到一个错误,因为更新动作仍试图找到一个ID。

我该如何重写?

有这更好的办法?

谢谢。

+0

你能否解释一下你的确切含义?我得到一个错误,因为更新操作仍然试图找到一个ID。“试图找到” - 怎么样? ID身份证号码? – polarblau 2011-01-22 22:16:38

回答

1

哇,很容易为:

class PeopleController < ApplicationController 

    before_filter :authenticate_unique_token, :only => [:edit] 

    def authenticate_unique_token 
    person = Person.find_by_unique_token(params[:unique_token]) 
    if person.blank? || person.id != params[:id].to_i 
     raise "whatever" 
    end 
    end 

我希望这可以帮助任何人!