0

新しく追加された列を行の値で更新する Sequel 移行を実行するにはどうすればよいですか?

Sequel のドキュメントには、列を静的な値で更新する方法が示されています。

self[:artists].update(:location=>'Sacramento')

私がする必要があるのは、新しい列を ID 列の値で更新することです。

何かのようなもの:

self[:artists].each |artist| do
  artist.update(:location => artist[:id])
end

しかし、上記は機能せず、どうすればよいのかわかりません。

ありがとう!

4

2 に答える 2

2

artistループ内は であるHashため、 を呼び出しています。これはインスタンスHash#updateを更新するだけでHash、データベースは変更しません。そのため、ループは何もしていないようです。

ループを機能させる方法を説明できます (一致する主キー値に制限されたデータセットallの代わりに使用しeachて更新する) が、ある列の値をすべての行の別の列の値に割り当てるだけなので、行う:

self[:artists].update(:location=>:id)
于 2012-11-14T19:50:00.537 に答える
0

テーブルのすべての行を更新する必要がある場合は、データを入力する必要がある新しい列であるためです

artists = DB[:artists]
artists.update(:column_name => 'new value')

または、必要に応じて、一意の行のみを移行ファイルに更新します。次のことができます。

artists = DB[:artists]
artists.where(:id => 1).update(:column_name1 => 'new value1', :column_name2 => "other")
于 2015-07-07T22:35:09.330 に答える