2013-02-18 65 views
3

我設立的職位,其中用戶的帖子總是有,除非它們是「驗證」用戶(User.verified =真)要由超級用戶主持的系統替代使用Rails的隱藏字段。讓事情安全

我正想安裝在用戶模型中的布爾列:驗證,如果這是真的,然後讓他們發佈和規避審覈。

因此,當用戶會去後...我知道我可以很容易地建立一個隱藏字段一個職位。舉例來說,在我的帖子的形式,我可以添加

<%= f.hidden_field :approved, :value => 1 if current_user.verified == 1 %> 

但是,我知道這是不是安全的,任何人都可以很容易地使用Firebug修改此。

將此邏輯移入模型/控制器或者是否存在覆蓋此類事物的良好資源鏈接,覆蓋或修改「默認」創建/更新操作的最佳實踐是什麼?

感謝

每下面的答案,這是我在我的崗位模型現在有:

#If user is verified, set approved column to true 
before_save :check_for_verified 

def check_for_verified 
    approved = user.verified? 
end 

然而,它不是讓我現在保存,它沒有錯誤,只是不允許保存。

回答

4

你的感覺是,這並不在視圖中屬於是正確的。

有很多方法可以解決這個問題。一種方法是在模型上設置before_create回調,如果用戶驗證,則設置批准

class Post 

before_create :approve_if_user_verified 

def approve_if_user_verified 
    approved = user.verified? 
end 
+0

太棒了。簡單,並使總體感覺。謝謝! – 2013-02-18 20:33:31

+0

是否有將任何修改工作更加普遍before_save,兩個創建/更新 – 2013-02-18 20:36:28

+1

是,before_save – 2013-02-18 20:38:05