Don't forget to lycansubscribe

extracted import_from_record to a module

Changed files
+17 -35
app
+5 -35
app/models/user.rb
··· 7 7 require_relative 'pin' 8 8 require_relative 'post' 9 9 require_relative 'repost' 10 + require_relative 'user_importable' 10 11 11 12 class User < ActiveRecord::Base 12 13 validates_presence_of :did ··· 19 20 20 21 before_destroy :delete_posts_cascading 21 22 22 - has_many :likes, foreign_key: 'actor_id', dependent: :delete_all do 23 - def import_from_record(like_uri, record, **args) 24 - like = self.new_from_record(like_uri, record) 25 - return nil if like.nil? || self.where(rkey: like.rkey).exists? 26 - 27 - like.import_item!(args) 28 - end 29 - end 30 - 31 - has_many :reposts, foreign_key: 'actor_id', dependent: :delete_all do 32 - def import_from_record(repost_uri, record, **args) 33 - repost = self.new_from_record(repost_uri, record) 34 - return nil if repost.nil? || self.where(rkey: repost.rkey).exists? 35 - 36 - repost.import_item!(args) 37 - end 38 - end 39 - 40 - has_many :quotes, foreign_key: 'actor_id', dependent: :delete_all do 41 - def import_from_record(post_uri, record, **args) 42 - quote = self.new_from_record(post_uri, record) 43 - return nil if quote.nil? || self.where(rkey: quote.rkey).exists? 44 - 45 - quote.import_item!(args) 46 - end 47 - end 48 - 49 - has_many :pins, foreign_key: 'actor_id', dependent: :delete_all do 50 - def import_from_record(post_uri, record, **args) 51 - pin = self.new_from_record(post_uri, record) 52 - return nil if pin.nil? || self.where(rkey: pin.rkey).exists? 53 - 54 - pin.import_item!(args) 55 - end 56 - end 23 + has_many :likes, foreign_key: 'actor_id', dependent: :delete_all, extend: UserImportable 24 + has_many :reposts, foreign_key: 'actor_id', dependent: :delete_all, extend: UserImportable 25 + has_many :quotes, foreign_key: 'actor_id', dependent: :delete_all, extend: UserImportable 26 + has_many :pins, foreign_key: 'actor_id', dependent: :delete_all, extend: UserImportable 57 27 58 28 def self.active 59 29 self.joins(:imports).distinct
+12
app/models/user_importable.rb
··· 1 + module UserImportable 2 + def import_from_record(item_uri, record, **args) 3 + item = self.new_from_record(item_uri, record) 4 + return nil if item.nil? || already_imported?(item) 5 + 6 + item.import_item!(args) 7 + end 8 + 9 + def already_imported?(item) 10 + self.where(rkey: item.rkey).exists? 11 + end 12 + end