1

私がやりたいことnameのような文字列を保持する列がデータベースにあり、それを分割して、アンパサンドの後のすべてが別の列に入り、文字列の前のすべてが元の場所に残ります。CVM™最終結果は、という列に入れ™、列abbrに保存CVMする必要がありnameます。

4

2 に答える 2

1

rake タスク ファイルを作成する

lib/tasks/split_name.rake

次に、以下を貼り付け、「TableName」を実際のテーブル名に変更します。

task :split_name => :environment do
    TableName.all.each do |r|
        a = r.name.split("&") #assuming exact same string format, and not null
        r.update_attribute(:name, a[0])
        r.update_attribute(:abbr, '&' + a[1])
    end
end

次に、そのまま実行します

rake split_name
于 2012-12-11T03:42:12.220 に答える
0

これはRailsレベルで行う必要がありますか? 関数を使用してPostgresだけでこれを行うこともできsplit_partます。テーブルで作業していると思いますusers

ALTER TABLE users ADD COLUMN abbr VARCHAR;

UPDATE users 
  SET name = SPLIT_PART(name, '™', 1),
      abbr = '™' || SPLIT_PART(name, '™', 2);

必要に応じて、これらのクエリを Rake タスクに焼き付けることもできます。

更新: おっと、あなたは Postgres を使用していると思いました。ただし、他の言語でも同様の方法を使用できるはずです。

于 2012-12-11T03:52:46.270 に答える