Ruby 案例比较
Ruby Case Comparison
这里是菜鸟
我试图在比较两个 Twitter 用户名时忽略大小写。一个在用户数据库中,正在检索到 valid_handles_results 数组中。我想比较来自单独数据库的 Twitter 句柄,其中 Twitter 句柄存储在记录 [1] 列中。
我收到以下错误:
undefined method `casecmp' for ["theFancyPies"]:Array
有什么建议吗?
all_orders_in_a_order_results.each do |record|
# check whether the tweet is unique or not, if yes then check whether the user has an account or not
# # the following query checks that the new entry being put in the all_orders_ordered database is unique or not
count_orders = @all_ordersDB.get_first_value('SELECT COUNT(*) FROM all_orders_ordered WHERE tweet_id = ? AND time_of_tweet = ? ' ,[record[5], record[4]])
unique_ordered = (count_orders ==0 )
# Query for selecting twitter_handles for all the users that are registered
valid_handles = %{SELECT twitter_handle FROM users}
valid_handles_results = @userDb.execute valid_handles
user_status = 0
valid_handles_results.each do |valid_handle|
if valid_handle.casecmp(record[1]) ==0
user_status = 1
else
user_status = 0
end
end
当执行您的 valid_handles
查询时,其结果是一个数组数组。即使您只选择一列 (SELECT twitter_handle FROM...
),valid_handles_results
数组中的条目也是包含单个元素的数组。
因此要修复错误,请将 valid_handle.casecmp(record[1])
替换为 valid_handle[0].casecmp(record[1])
虽然一开始这看起来有点令人困惑,但这背后的原因是这意味着 @userDb.execute
可以 return 一个一致的结构,而不管查询中选择的列数如何。
为了帮助将来调试类似的错误,了解 "undefined method" 错误真的很有帮助。 undefined method `casecmp' for ["theFancyPies"]:Array
告诉您您尝试调用 casecmp
但您尝试调用它的对象没有具有该名称的方法。 :Array
告诉您调用该方法的对象的 class。所以在这种情况下,当你期待 String
.
时,你得到了 Array
这里是菜鸟
我试图在比较两个 Twitter 用户名时忽略大小写。一个在用户数据库中,正在检索到 valid_handles_results 数组中。我想比较来自单独数据库的 Twitter 句柄,其中 Twitter 句柄存储在记录 [1] 列中。
我收到以下错误:
undefined method `casecmp' for ["theFancyPies"]:Array
有什么建议吗?
all_orders_in_a_order_results.each do |record|
# check whether the tweet is unique or not, if yes then check whether the user has an account or not
# # the following query checks that the new entry being put in the all_orders_ordered database is unique or not
count_orders = @all_ordersDB.get_first_value('SELECT COUNT(*) FROM all_orders_ordered WHERE tweet_id = ? AND time_of_tweet = ? ' ,[record[5], record[4]])
unique_ordered = (count_orders ==0 )
# Query for selecting twitter_handles for all the users that are registered
valid_handles = %{SELECT twitter_handle FROM users}
valid_handles_results = @userDb.execute valid_handles
user_status = 0
valid_handles_results.each do |valid_handle|
if valid_handle.casecmp(record[1]) ==0
user_status = 1
else
user_status = 0
end
end
当执行您的 valid_handles
查询时,其结果是一个数组数组。即使您只选择一列 (SELECT twitter_handle FROM...
),valid_handles_results
数组中的条目也是包含单个元素的数组。
因此要修复错误,请将 valid_handle.casecmp(record[1])
替换为 valid_handle[0].casecmp(record[1])
虽然一开始这看起来有点令人困惑,但这背后的原因是这意味着 @userDb.execute
可以 return 一个一致的结构,而不管查询中选择的列数如何。
为了帮助将来调试类似的错误,了解 "undefined method" 错误真的很有帮助。 undefined method `casecmp' for ["theFancyPies"]:Array
告诉您您尝试调用 casecmp
但您尝试调用它的对象没有具有该名称的方法。 :Array
告诉您调用该方法的对象的 class。所以在这种情况下,当你期待 String
.
Array