update_attributes() 无法正常工作

update_attributes() does not works properly

@related=Book.find_all_by_related(@book.related)
if @related.count>1
  @related.each do |b|
    b.update_attributes(params[:book])
  end
end

我正在使用 rails 2.3.5。对于上面的代码,第一次迭代工作正常并显示为 true。但是对于下一次迭代, b.update_attributes() 显示 false 。所有参数都在迭代中到达。方法 update_attributes() 有什么条件吗?

如果您的模型指定了 attr_accessible 个属性,则只会更新这些属性。

使用 attr_accessible 来防止(由用户)批量分配不应由用户编辑的属性。质量分配用于标准控制器的创建和更新方法。

class User < ActiveRecord::Base
  attr_accessible :login, :password
end

因此,执行以下操作会 return 为真,但不会更新状态属性。

@user.update_attributes(:status => 'active')

如果要更新status属性,需要单独赋值。

@user.status = 'active'
save