入力されたテキストをスキャンし、それがどのタイプのドメイン名であるかをインテリジェントに理解するコントローラーで、作成アクションの一部をつなぎ合わせようとしています。
「domain_names」というテキストボックスがあります。ユーザーは、ドメインをコンマで区切ったボックスに入力します(例:「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