2017-08-16 31 views
0

ユーザーモデルに2つの列code1とcode2があります。私はコードとして列の値をマージしようとしています。私はそれのための移行ファイルを書いて、私はcode1とcode2を削除しました。古いアプリを動かすには、code1とcode2を受け入れてコードを取得する必要があります。だから私はcode1とcode2を許可した。しかし、私は私のコントローラでは、私はこのエラーを取得し、古いアプリモデル内のパラメータを更新する必要があります

unknown attribute 'code1' for User 

を使用するとき、私は次のコードに

if user_params[:code1].present? 
    user_params[:code] = user_params[:code1] + user_params[:code2] 
    user_params.delete(:code1) 
    user_params.delete(:code2) 
end 

を書いてきた。しかし期待どおりに動作していません。古いアプリでcode1をサポートするにはどうすればいいですか?

答えて

1

私はわかりませんが、あなたはUser modelattr_accessorを定義し、コントローラ上でそれを許可したら、Userモデルにコールバックを書き、self.code = self.code1 +自己を書くことができますUserモデル

attr_accessor :code1, :code2を追加してみてください。コード2

class User < ApplicationRecord 
    attr_accessor :code1, :code2 

    before_validation :demo_callback 

    def demo_callback 
    self.code = self.code1 + self.code2 
    end 

end 
+0

本当にうまくいった、ありがとう – CR7

関連する問題