在rails上的ruby中的“delete_if”方法中使用实例变量

时间:2016-04-18 10:53:27

标签: ruby-on-rails arrays ruby

我正在使用 @registers.delete_if { |r| r.location_id != @location_id && @location_id.present?} 过滤寄存器,以便只保留选择location_id的寄存器,如果至少选择了任何内容。问题是使用@location_id.present?工作正常,但检查id是否相同则不然。如果我用这样的数字检查硬编码:r.location_id != 5它确实有效。

1 个答案:

答案 0 :(得分:2)

试试这样:

@registers.delete_if { |r| r.location_id != @location_id.to_i && @location_id.present?}

但我认为要做得更好,你应该这样做:

@registers.delete_if { |r| r.location_id != @location_id.to_i if @location_id.present?}