2012-03-31 54 views
1

我有一個ActiveRecord Appointment模型,其中包含主題和時間屬性。我想讓用戶能夠修改時間。但是我想阻止他們在填充此字段後修改主題。阻止用戶編輯Rails表中的某些列

我應該如何在Rails中乾淨利落地講述這個問題? 謝謝。

回答

0

如果您在新編輯視圖和編輯視圖之間使用共享的部分,如果appointment.is_new_record?返回true,則可以有條件地輸出所涉及的列的編輯字段。否則,只需將它們呈現爲文本。

+1

將它們渲染爲文本不會阻止某人編輯窗體並強制該值傳回。這是Github最近的問題:http://arstechnica.com/business/news/2012/03/hacker-commandeers-github-to-prove-vuln-in-ruby.ars – 2012-03-31 13:08:34

0

,你應該在你的模型中使用attr_accessible:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible

這將意味着你的創作,你將不得不手動設置的值,但您的更新,您可以在attr_accessible使用質量分配和任何值不列表將被忽略。

+0

嗨,本,我需要允許他們在第一次創建約會時設置主題,雖然 – AdamNYC 2012-03-31 13:15:56

+0

正確,所以你需要做一些事情,如m = Model.new(params [:model]); m.topic = params [:model] [:topic],m.save在你的創建方法中。然後在你的更新中,你可以使用m.update_attributes(params [:model]),因爲我們擔心主題值會被設置(假設你在模型中添加了attr_accessible:time) – 2012-03-31 13:26:51

相關問題