Ruby on rails 扫描文本以查找域类型

Ruby on rails 扫描文本以查找域类型,ruby-on-rails,ruby,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3.2,我正在尝试在一个控制器中拼凑创建操作的一部分,该控制器扫描输入的文本并智能地理解它是什么类型的域名 我有一个名为“域名”的文本框。用户将域放入由逗号分隔的框中,例如“yahoo.com,google.com” 在控制器中,它按如下方式点击: @extracted_domains = (params[:domain_names]).split(",") @extracted_domains.each do |domain| domain.strip domain_scan = do

我正在尝试在一个控制器中拼凑创建操作的一部分,该控制器扫描输入的文本并智能地理解它是什么类型的域名

我有一个名为“域名”的文本框。用户将域放入由逗号分隔的框中,例如“yahoo.com,google.com”

在控制器中,它按如下方式点击:

@extracted_domains = (params[:domain_names]).split(",")
@extracted_domains.each do |domain|
    domain.strip
    domain_scan = domain.scan(/(\w+)[.]/).flatten
    com_scan = domain.scan(/[.](\w+)/).flatten
    new_domain_type = DomainType.find_or_create_by_domain_type(:domain_type => com_scan)
    new_domain = Domain.create(:domain => domain_scan, :domain_type_id => new_domain_type.id)
end 
在控制台中,它工作得很好。但当我把它付诸实践时,我会在数据库中存储一些非常奇怪的东西。例如,如果:domain的值为“google”,则当其存储在数据库中时,它将改为值“--\n-google\n”

不知道为什么

提前谢谢

更新**

问题:它将数组放入字符串中

解决方案:将其设置为字符串

domain_scan = domain.scan(/(\w+)[.]/).flatten.first
com_scan = domain.scan(/[.](\w+)/).flatten.first

至于您的问题,我们可以看到发送的确切参数吗


我想看一看域提取的情况。

它似乎是由YAML输入提供的。字符串开头的三个破折号后跟一个换行符是YAML的有力指示器:

是否有转换它的方法?谢谢你的帮助。我看了那块宝石。看来这是解决我问题的一个很好的办法。但在我使用它之前,我想弄清楚为什么会发生这种情况。我想用非域字符串做更多类似的事情。非常感谢你的帮助。杰米·加斯金斯:是的,看起来你确实在储存yaml。你正在序列化属性吗?当你这样做时,这是默认格式。据我所知,我不是。或者至少不打算这么做。这有什么办法吗?如何将其转换为普通字符串?再次感谢你,你帮了我很大的忙。想了想,我真的应该用那块宝石,因为链接的格式不同;我的代码只适用于“google.com”,但如果有人写www.google.com,它可能会崩溃。如果有任何关于如何从yaml转换的进一步提示,我将不胜感激——但现在让我将此标记为问题的正确答案:)取决于您的ruby/yaml解析器版本,但请尝试yaml::load(域)