テストちょっと乱雑ではなく
User < ActiveRecord::Base
has_many ...
acts_as_user_merge
end
@user1.merge(@user2)
を使用する方法
module UserMerge
module ActsAsUserMerge
module Base
def self.included(klass)
klass.class_eval do
extend Config
end
end
end
module Config
def acts_as_user_merge
include ::UserMerge::ActsAsUserMerge::InstanceMethods
end
end
module InstanceMethods
def merge(user)
models = Array.new
models_names = User.reflections.collect{|a, b| b.class_name if b.macro==:has_many}.compact
models_names.each do |name|
models << Object.const_get name
end
models.each do |model|
model.where("user_id = ?", user.id).update_all(:user_id => self.id)
end
user.destroy
end
end
end
end
::ActiveRecord::Base.send :include, ::UserMerge::ActsAsUserMerge::Base
/lib/acts_as_user_merge.rb一般化ソリューション 場所ファイルの場合、この
@user1 = User.find(1);
@user2 = User.find(2);
Contact.where("user_id = ?", @user2.id).update_all(:user_id => @user1.id)
@user2.destroy
ような何かあなたに考えを与える必要があります
私はいくつかの一般化ソリューションをしたい....私はそれを行うにはしたくありません私の30のすべての団体 – Salil