devise.rbファイルの中身ですが、リファクタリングしたいです。
login_user
とlogin_user_at_nil
をそれぞれ使いたいのですが、
ほぼ中身は同じなので、リファクタリング出来ないかと考えています。
違いは、changed_at: nil
があるかないかです。
アドバイスいただけますと幸いです。どうぞよろしくお願いいたします。
ruby
1 2module ControllerMacros 3 4 def login_user(user = nil) 5 if user.blank? 6 main = create(:main) 7 create(:status, main: main) 8 create(:ip, main: main) 9 user = create(:user, main: main) 10 end 11 allow(controller).to receive(:authenticate_user!).and_return(true) 12 @request.env['devise.mapping'] = Devise.mappings[:user] 13 @user = user 14 sign_in @user 15 end 16 17 def login_user_at_nil(user = nil) 18 if user.blank? 19 main = create(:main) 20 create(:status, main: main) 21 create(:ip, main: main) 22 user = create(:user, main: main, changed_at: nil) 23 end 24 allow(controller).to receive(:authenticate_user!).and_return(true) 25 @request.env['devise.mapping'] = Devise.mappings[:user] 26 @user = user 27 sign_in @user 28 end
リファクタリング試した結果
ruby
1def login_user_at_nil(user = nil) 2 login_user_sub(user, changed_at: nil) 3end 4 5def login_user(user = nil) 6 login_user_sub(user, {}) 7end 8 9 def login_user_sub(university_user, option) 10 if user.blank? 11 main= create(:main) 12 create(:status, main: main) 13 create(:ip, main: main) 14 user = create(:user, main: main, option) 15 end 16 allow(controller).to receive(:authenticate_user!).and_return(true) 17 @request.env['devise.mapping'] = Devise.mappings[:user] 18 @user = user 19 sign_in @user 20 end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/24 04:05
2022/01/24 05:13