2010-05-07 48 views
1

我正在製作一個用戶管理頁面。對於我創建的系統,用戶需要獲得批准。有時候,會有很多用戶批准,所以我想讓它變得容易。我將它存儲爲一個名爲approved的布爾列。爲什麼我不能更新布爾列?

我記得Edit Multiple Individually Railscast,並認爲它會非常適合。但是,我遇到了一些問題,我追溯到ActiveRecord::Base#update

update在這個例子中正常工作:

>> User.all.map(&:username) 
=> ["ben", "fred"] 
>> h = {"1"=>{'username'=>'benjamin'}, "2"=>{"username"=>'frederick'}} 
=> {"1"=>{"username"=>"benjamin"}, "2"=>{"username"=>"frederick"}} 
>> User.update(h.keys, h.values) 
=> ... 
>> User.all.map(&:username) 
=> ["benjamin", "frederick"] 

但不是這一個:

>> User.all.map(&:approved) 
=> [true, nil] 
>> h = {"1"=>{'approved'=>'1'}, "2"=>{'approved'=>'1'}} 
>> User.update(h.keys, h.values) 
=> ... 
>> User.all.map(&:approved) 
=> [true, nil] 

'1'換款到true沒有有所作爲時,我測試。

我在做什麼錯?

回答

2

可能是你正在使用你的user.rb

attr_protected :approved 
+0

關閉 - 這是'attr_accessible'!奇怪的是,我可以通過'user.approved = true'直接在模型上設置它。這不應該是這樣,對嗎? (我正在使用'authlogic' - 也許'acts_as_authentic'扮演一個角色?) – 2010-05-07 15:37:44

+0

哦...... n/m。有一段時間沒有閱讀過文檔:「[attr_accessible]指定了一個可以通過批量賦值設置的模型屬性的白名單」 – 2010-05-07 15:40:31