目前在我的更新控制器方法中我有:
@group.attributes = {
:title => params[:group][:title],
:description => params[:group][:description],
:password_required => params[:group][:password_required],
:password => params[:group][:password],
:archived => params[:group][:archived]
}
问题是这个方法在多个地方使用,并且并不总是传递所有这些参数,这导致“nil”导致db commit回滚。
如何定义属性,只有在定义属性时才需要使用if?
由于
答案 0 :(得分:3)
可能会做这样糟糕的事情:
@group.attributes = {
:title => params[:group][:title] || @group.title,
:description => params[:group][:description] || @group.description,
:password_required => params[:group][:password_required] || @group.password_required,
:password => params[:group][:password] || @group.password,
:archived => params[:group][:archived] || @group.archived
}
不建议使用这种丑陋的代码,但它解决了如何在没有明确if
块的情况下执行此操作的问题。
答案 1 :(得分:2)
为什么不用
简化它@group.update_attributes(params[:group])
这样一来,如果价值我们不会更新