3

これらの値を DB テーブルに取り込むにはどうすればよいですか?

最初に、推測させるのではなく、単に公開します。私は ROR 初心者です。私は、データベースにデータを入力するアプリを設計しています-(この時点でSQLite)-ユーザーがこれらの値に対してcrudを実行できるようにし、元のファイルと同じ形式でファイルをエクスポートします。この形式はそのままで、ドキュメントの終わりまで繰り返されます。楕円は前のトーンと次のトーンを表します。

...

[Tone27]                            
Atone = 707.3                        
Btone = 746.8                        
Btonelength = 3                        
Btonedebounce = 1                    
Description = Fire Department 1                
mp3_Emails = email@address.com,email2@address.com,email3@address.com          
amr_Emails = email2@textmessaging.com,email1@textmessaging.com        
alert_command = c:\test.bat                
post_email_command = c:\test2.bat            
radio_frequency = 154.475    
exclude_from = 13:25                        
exclude_to = 13:35                        
exclude_emails = email2@textmessaging.com,email2@address.com

...

さて、問題は、Rails で、これらの値を db テーブルに入れる最も簡単で適切な方法は何ですか? カスタム パーサーを作成する必要があることは理解していますが、これを効率的に行うには Ruby/Rails に精通していません。

4

1 に答える 1

3

カスタム パーサー

ファイルを 1 行ずつ読み取り、保存する属性を読み取る必要があります。次のようになります。

file = File.new('example.txt', 'r')
while (line = file.gets)
  if line.match(/^\W[a-zA-Z0-9]*\W/) # practice your regex at rubular.com
    # create the object here
  end
  if line.match(/.*=.*/)
    pieces = line.split('=')
    key = pieces[0].strip
    value = pieces[1].strip
    # add this to the object here
  end
end

各行を取得し、空白 (ある場合) をトリミングしてから、= 記号で分割してから、再度トリミングすることをお勧めします。そこにキーと値のペアがあります。

すべての [Tone##] は新しいオブジェクトになるため、それをループに計画する必要があります。

高レベルの概要

最初に、移行を使用してデータベース テーブルを設計し、それらのテーブルをサポートするモデルを作成する必要があります。

次に、テキスト ファイルを解析して、解析したばかりの属性と値を持つオブジェクトを作成する必要があります。このステップは、あなたが遭遇する最も純粋な ruby​​ です (ここでは、Rails はあまり役に立ちません)。これには、抽出する特定の値をテキスト ファイルで検索するカスタム パーサーが必要になります。

テキスト ファイルから解析された属性と値を使用してオブジェクトを作成したら、それらのオブジェクトをすべてデータベースに保存します。

このアプリに取りかかる前に、サンプル アプリまたはデモ アプリを作成することをお勧めします。経験レベルで数時間以内に簡単なアプリを起動して実行できるチュートリアルがあります。

これは、実行する必要があることの概要です。これらの各ステップでは、より具体的な StackOverflow の質問が発生する可能性が高くなります。

于 2012-11-28T14:11:46.443 に答える