update_attributes()无法正常工作

时间:2015-01-22 12:48:48

标签: ruby-on-rails ruby-on-rails-2

@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()有条件吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,执行以下操作将快速返回true,但不会更新status属性。

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

如果要更新状态属性,则应单独分配。

@user.status = 'active'
save