Rails如何从阵列中获取nil total_price的所有记录?

时间:2012-01-15 17:23:10

标签: ruby-on-rails ruby

在我的控制器中我有:

    @taletids = Taletid.where(:online => true)
    @taletids.each{|taletid| taletid.calculate_total(params[:search])}
    @taletids.sort!

在我的模特中,我有:

    attr_accessor :total_price
    def <=> other
      self.total_price <=> other.total_price
    end

    def total_price
    @total_price = self.data
    else
    @total_price = nil
end

问题是我无法对total_price为nil

的对象进行排序

因此,如果nil:

,我想从@taletids数组中删除total_price
    @taletids = Taletid.where(:online => true)
    @taletids.each{|taletid| taletid.calculate_total(params[:search])}
        remove all the @Taletids that have total_price of nil
    @taletids.sort!

2 个答案:

答案 0 :(得分:1)

你可以这样做:

@taletids = @taletids.delete_if {|taletid| taletid.total_price == nil }

编辑:缩短它以使用大括号,因为它是单行。

编辑2:所以它不删除nils,只创建一个没有它们的新数组。

@temptaletids = @taletids.delete_if do |taletid|
  taletid.total_price == nil
end

该实现使@temptaletids成为一个没有任何nils的数组,但只留下了@taletids。

答案 1 :(得分:1)

@taletids = @taletids.select{|taletid| taletid.total_price  != nil}