更新属性,除非空白?

Cha*_*hap 6 ruby activerecord ruby-on-rails

我有一个现有的项目记录,我正在导入一个CSV文件来更新相关的项目属性.但是,通常CSV将包含空白字段,如果相关的CSV字段为空,我不想重写现有属性.

像这样的东西:

project.update_attributes(:name => row.field('project_name') unless row.field('project_name').blank?,                                             
                          :owner => row.field('project_owner') unless row.field('project_owner').blank?,
                          :due_date => row.field('project_due_date') unless row.field('project_due_date').blank?)
Run Code Online (Sandbox Code Playgroud)

ger*_*rit 23

project.update_attributes({:name => row.field('project_name'),                                                                         
                          :owner => row.field('project_owner'),
                          :due_date => row.field('project_due_date')}.reject{|k,v| v.blank?})
Run Code Online (Sandbox Code Playgroud)


小智 7

如果需要,您可以从控制器执行此操作:

def some_params
    params.permit(:foo, :bar).reject { |_, v| v.blank? }
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果属性为空,则不会保存这些属性