类型转换如何在轨道上的红宝石中工作?

时间:2015-07-17 19:43:52

标签: ruby ruby-on-rails-3 rails-activerecord

我是ruby on rails的新手,我正在尝试在Activity<类中进行操作的ActiveRecord :: Base的。 我被困在需要将字符串数组转换为整数的位置。

代码如下

#code from line 151

start_time_parts=start_time.split(":").collect{ |y| y.to_i }

start_time=Time.utc(2015,"jan",1,start_time_parts[0],start_time_parts[1],start_time_parts[2])
end_time_parts=end_time.split(":").collect{ |y| y.to_i }
end_time=Time.utc(2015,"jan",1,end_time_parts[0],end_time_parts[1],end_time_parts[2])

sql1='SELECT `Start_Time` FROM Times'
sql2='SELECT Rates FROM New_billcodes_mock WHERE Category_name=?, Instrument_name=? and Time_zone_name=?'


database_string_start_time =Activity.find_by_sql([sql1,'1'])
#error is here    
string_start_time_parts=database_string_start_time.split(":").collect{ |y| Activity.type_cast(y)}
database_start_time=Time.utc(2015,"jan",1,string_start_time_parts[0],string_start_time_parts[1],string_start_time_parts[2])

我收到错误消息

NoMethodError (undefined method `type_cast' for #<Class:0x4c25340>):

显然我不能使用to_i方法,因为它不是类Activity的方法。如果有一个现有的方法可用于转换为整数,请帮助我。

2 个答案:

答案 0 :(得分:0)

此代码存在许多问题,但针对您的具体问题:在两个地方使用{ |y| y.to_i }构造返回整数;你为什么不在第三个实例({ |y| Activity.type_cast(y)})中使用它?这是一个相同的用例。

或者如果Activity.find_by_sql()没有返回一个数组,这会使它在':'上拆分相当毫无意义 - 但这是一个不同的问题。

答案 1 :(得分:0)

我想我已经解决了我的问题。我使用全局方法Integer()将字符串转换为整数。

{|y| y.to_i}

不起作用,因为to_i不是class Activity

中的方法