0

Admin と Worker の 2 つのテーブルがあります。それらは同じ引数 (電子メール、パスワードなど) を持っています。

電子メール「foo@example.com」を含む行を Worker テーブルから Admin テーブルに削除しようとしました (そしてそれを Worker テーブルから削除しました)。

私は次のことを試しました:

@email = 'foo@example.com'
@row_email_deleted = Worker.find_by_email(@email)
Admin.add(@row_email_deleted)
@row_email_deleted.destroy

しかし、うまくいきません:/

誰かが私の問題を解決するのを手伝ってくれますか?

4

2 に答える 2

2

これを試して:

@email = 'alon@gmail.com'
@worker = Worker.find_by_email(@email)
@new_admin = @worker.becomes Admin
@new_admin.save
@worker.destroy

しかし、 STIにリファクタリングすることをお勧めします。

于 2012-12-30T18:41:44.733 に答える
1

apneadiving とともに、「add」メソッドが何で構成されているかわかりません。それと、何が機能していないかについての詳細があまりないため、機能していない理由を知るのが難しくなります。とはいえ、そのすべてを無視して、私は次のようにします:

Worker.transaction do
  @email = 'foo@example.com'
  @worker = Worker.find_by_email(@email)
  Admin.create(@worker.attributes.reject{|k,v| %w[id].include?(k)}) 
  @worker.destroy
end
于 2012-12-30T18:45:43.323 に答える