如何创建将属性值转换为新值的方法

时间:2013-04-17 21:31:48

标签: ruby-on-rails ruby methods attributes

我有一个表单,用户在其中输入属性的数字:bytesize,它具有整数数据类型。该数字表示我的对象@catcher的字节数。

我希望有一个方法可以将:bytesize的值转换为兆字节。也就是说,我希望能够运行@ catcher.mbsize,这将显示该对象的兆字节数。

我对Rails很陌生,所以如果这看起来很明显,我很抱歉。

2 个答案:

答案 0 :(得分:2)

转换方法非常简单:

class Catcher
  def mbsize
    self.bytesize / (1 << 20)
  end
end

请记住,属性在内部存储为实例变量,因此attr_accessor :bytesize存储在@bytesize中。

答案 1 :(得分:0)

您需要将mbsize列添加到数据库中。

在控制器中:

def create
#other code
def mbsize
    @bytesize / (1 << 20)
  end
@catcher.mbsize=mbsize
@cather.save
end

修改

如果您不需要相关的DB记录,您只需在Catcher模型中定义此方法:

def mbsize
bytesize=self.bytesize
mbsize=#your method of converting
end

由于某种原因,你的字节大小是刺痛的。您可以通过.to_i方法

将其转换为整数