Ruby on rails Rails模型如何基于最后一个值创建数组?

Ruby on rails Rails模型如何基于最后一个值创建数组?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在我的模型中,我有: attr_accessor :ppris def last(x) @ppris = [] if @ppris == nil @ppris << 1 else @ppris << 2 end end def pakke if self.pakkes.count > 0 self.pakkes.each{|pakke| beregn_pakke(pakke.price)}

在我的模型中,我有:

attr_accessor :ppris

def last(x)
    @ppris = []

    if @ppris == nil
        @ppris << 1
    else
        @ppris << 2
    end
end

def pakke
  if self.pakkes.count > 0
  self.pakkes.each{|pakke| beregn_pakke(pakke.price)}
  end
end
但后来我得到了一个命名者。我预计PPRI不会出现以下错误:

[1, 2, 3, 4, 5]
我的模型方法有什么问题?为什么我不能创建一个数组来为每个pakke获取附加值

@ppris = []
if @ppris == nil
@ppris
永远不会是
nil
。它将是
空的?
,但不是
nil

回应你的评论


每次调用该方法时都会创建一个新数组。如果需要与实例关联的单个阵列,请在中创建一个。

您可能需要:

def last(x)
  @ppris = []
  if @ppris.empty?
    @ppris << 1
  else
    @ppris << @ppris.last + 1
  end
end
def last(x)
@ppris=[]
如果@ppris.empty?

@ppris我已经改变了这一点,但仍然是company.ppris对于每个公司来说都只是[1],我希望它是[1,2,3,4,5]@Railsbeginner,因为每次调用该方法时都会创建一个新的
@ppris
。那么我如何不每次都创建一个新的'@ppris'?我可以创建一个方法吗?希望不要每次都创建一个新的'@ppris'。我已经找到了方法。只是不小心删除了@ppris=[]并替换了if@ppris.empty?使用if@ppris.nil?@Railsbeginner,只要你能处理
nil
,如果这个方法没有被调用,我想这个解决方案是可以的——不过我宁愿看到它被初始化。
@ppris = []
if @ppris == nil
def last(x)
  @ppris = []
  if @ppris.empty?
    @ppris << 1
  else
    @ppris << @ppris.last + 1
  end
end