docbrown/app/models/concerns/user_subscription_sourceable.rb
rhymes 56f1f2d777
[deploy] Set UserSubscription sourceable columns to nullable (#10033)
* Set UserSubscription sourceable columns to nullable

* Fix spec
2020-08-27 16:25:48 +02:00

33 lines
901 B
Ruby

module UserSubscriptionSourceable
extend ActiveSupport::Concern
# This all assumes there's an association with User under the column user_id.
included do
has_many :user_subscriptions, as: :user_subscription_sourceable, dependent: :nullify
has_many :sourced_subscribers,
class_name: "User",
through: :user_subscriptions,
source: :subscriber,
foreign_key: :user_id
end
def build_user_subscription(subscriber)
UserSubscription.new(user_subscription_attributes(subscriber))
end
def create_user_subscription(subscriber)
UserSubscription.create(user_subscription_attributes(subscriber))
end
private
def user_subscription_attributes(subscriber)
{
user_subscription_sourceable: self,
author_id: user_id,
subscriber_id: subscriber&.id,
subscriber_email: subscriber&.email
}
end
end