2011-03-29 79 views
1

我最近開始在rails(3.0.5)中構建應用程序。爲了讓事情發展,我搭建了一個模型(比如User)。現在,這個創建的模型是ActiveRecord::Base的完全裸擴展,但是控制器使用User.create(params[:user])等暗示attr_accessible正在設置。Ruby on Rails attr_accessible和腳手架

過了一段時間(現在),在發生一些變化之後,我得到了關於質量分配中受保護字段的警告,並且這些方法都沒有工作!任何人都可以幫我弄清楚爲什麼這是爲什麼軌道會支撐一些不應該工作的東西?

回答

1

腳手架和attr_accessible是兩個完全不同的東西。

當您指定一個屬性爲可訪問的時,您會說當您嘗試對模型進行質量分配(如保存)時,只會更新可訪問的值。因此,如果您的用戶名字段可以訪問,並且您嘗試更改密碼字段,則後者不會更改,您將收到警告。

另一方面,腳手架只是讓RESTful資源快速啓動並運行的快速方法。

這兩個想法確實沒有聯繫。

+0

謝謝,我想我想通了。我猜'attr_accessible'的默認設置是表中的所有字段。然而,當我調用'attr_accessible'來允許'虛擬'字段與'create'等一起工作時,它會覆蓋這個初始配置,只留下我定義爲可訪問的屬性。 – connec 2011-03-29 07:42:25

+2

沒有默認值。您可以將它用於某些領域或不是。如果不是,所有字段都可以大量更新。如果是的話,即使一個可訪問字段意味着其他字段也不能大規模更新。更多關於這個問題:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html – Spyros 2011-03-29 07:56:52

+0

感謝您的澄清! – connec 2011-03-30 11:24:15