3
A
回答
5
您應該在此處使用attr_protected
而不是attr_readonly
。那麼你將被保護免受形式的大規模排斥。
#in model
attr_protected :my_field
#in controller
obj = MyModel.new({:my_field => "dsadsad"})
obj.my_field
#=> nil
obj.my_field = "ololo"
obj.my_field
#=> "ololo"
編輯
情況:你需要設置email
只有一次:在創建用戶。然後,只有當您是管理員時纔想編輯電子郵件。
# Model
attr_protected :email
# Controller
def create
@user = User.new params[:user]
@user.email = params[:user][:email]
@user.save
respond_with @user
end
def update
@user = User.find params[:id]
@user.email = params[:user][:email] if curent_user.admin?
@user.update_attributes params[:user]
respond_with @user
end
還檢查了:http://railscasts.com/episodes/237-dynamic-attr-accessible
相關問題
- 1. 如何覆蓋已覆蓋的類
- 2. 覆蓋覆蓋?
- 3. 如何覆蓋CSS?
- 4. 如何覆蓋attr_protected?
- 5. 如何覆蓋Schedulers.io()?
- 6. 如何覆蓋NSWindow?
- 7. 如何覆蓋DataAnnotations
- 8. 如何覆蓋initWithRootViewController
- 9. 如何覆蓋navigationItem.leftBarButtonItem
- 10. 如何覆蓋CSS
- 11. 如何覆蓋pagingtoolbar?
- 12. 如何覆蓋Contains()?
- 13. 如何覆蓋Function.prototype.toString
- 14. 如何覆蓋TIniFile.Create?
- 15. 如何覆蓋sys.programGroup.linkDir?
- 16. 如何覆蓋Backbone.sync?
- 17. 如何覆蓋CSS
- 18. 如何覆蓋TextBlock.GetTextPositionFromPoint?
- 19. 如何覆蓋bootstrap?
- 20. 如何覆蓋與
- 21. 如何覆蓋QSqlRelationalTableModel?
- 22. 如何覆蓋init?
- 23. 如何覆蓋BorderBrush?
- 24. 如何覆蓋GetWebResponse
- 25. 如何覆蓋ObjectOutputStream.writeStreamHeader()?
- 26. 如何覆蓋onLoad?
- 27. 如何覆蓋ConfigurationManager.ConnectionStrings.IsReadOnly();
- 28. 如何覆蓋TryParse?
- 29. C++覆蓋...覆蓋?
- 30. 覆蓋或覆蓋
但用戶需要能夠創建過程中修改的屬性。 (這是一個電子郵件字段) – tanman 2011-05-09 22:37:28
檢查我的更新 – fl00r 2011-05-10 08:57:38