Ruby on rails 为什么可以';我不能用update设置布尔列吗?
我正在制作一个用户管理页面。对于我正在创建的系统,用户需要获得批准。有时候,会有很多用户需要批准,所以我想让这变得简单。我将其存储为一个名为Ruby on rails 为什么可以';我不能用update设置布尔列吗?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在制作一个用户管理页面。对于我正在创建的系统,用户需要获得批准。有时候,会有很多用户需要批准,所以我想让这变得简单。我将其存储为一个名为approved的布尔列 我记得当时的情景,觉得很合适。然而,我遇到的问题可以追溯到ActiveRecord::Base#update update在本例中效果良好: >> User.all.map(&:username) => ["ben", "fred"] >> h = {"1"=>{'username'=&g
approved
的布尔列
我记得当时的情景,觉得很合适。然而,我遇到的问题可以追溯到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
并没有什么区别
我做错了什么?可能是您在user.rb中使用的
attr_protected :approved
关闭--它是可访问的属性!奇怪的是,我可以通过执行
user.approved=true
直接在模型上设置它。不应该是这样的,对吧?(我使用的是authlogic
——也许扮演的角色是真实的在扮演角色?)。。。不适用。有一段时间没有阅读文档:“[attr_accessible]指定可通过批量分配设置的模型属性白名单”