2014-03-04 49 views
0

我正在創建一個沒有用戶認證系統的簡單博客/新聞網站。我決定使用簡單的某種祕密密鑰檢查技術,以便知道密鑰的訪問者發佈帖子。Rails要求創建模型的密鑰

總之,要發佈,你必須提供一個密鑰。否則,它的對象不應該保存到數據庫中。

這是我的代碼。

class Post < ActiveRecord::Base 

    attr_accessor :slaptazodis 

    validate :passcheck 
    validates :title, presence: true 
    validates :body, presence: true 

    def passcheck 

    if :slaptazodis != "1234" 
     errors.add(:base, 'Invalid pass') 
    end 
    end 
end 

所以,我創建沙箱標題,正文一種新的模式和屬性slaptazodis設置爲1234。然而,當我檢查錯誤,控制檯不斷顯示我「無效通行證」。我究竟做錯了什麼?是關於屬性還是什麼?預先感謝您:)

回答

1

您應該考慮將該邏輯遠離後置模型並將其移至控制器。

在控制器中,您可以檢查用戶發送的參數,例如。

if params[:slaptazodis] != "1234" 

但是,如果你正在學習的軌道,只是想讓它與您現有的解決方案,從改變工作:

if :slaptazodis != "1234" 

到:

if slaptazodis != "1234" 

的 「:」告訴Rails,它應該考慮符號(與字符串幾乎相同)後面的字符,以便澄清,因此您的代碼是差不多就像說:

if "slaptazodis" != "1234" 

這當然總是呈現爲真。

+0

我可以問你爲什麼我不需要使用:在變量之前?事情是,我,我自己,我不會放在那裏,但有些人告訴我,我必須。我還是不太明白。 –

+0

@LukasValatka看看這個解釋:https://www.ruby-forum.com/topic/194870並回到如果你不明白:-) – gernberg

+1

非常感謝你!:) –