2015-07-17 2 views
0

Я новичок в рубинах на рельсах, я пытаюсь совершать операции в классе. Активность < 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. Пожалуйста, помогите мне, если существует существующий метод, который я могу использовать для преобразования в целые числа.

ответ

0

Существует много проблем с этим кодом, но по вашему конкретному вопросу: в двух местах вы используете конструкцию { |y| y.to_i } для возврата целых чисел; почему вы не используете это в третьем случае ({ |y| Activity.type_cast(y)})? Это один и тот же вариант использования.

Или было бы, если бы Activity.find_by_sql() не возвращал массив, что делает его разделение на ':' довольно бессмысленным - но это другой вопрос.

0

Я думаю, что я получил решение своей проблемы. Я использовал глобальный метод Integer(), чтобы преобразовать строку в целое.

{|y| y.to_i} 

не работает, поскольку to_i не является методом в class Activity

Смежные вопросы