Closed
Description
Problem
My User
model already has a subscribed?
method indicating whether the user is a paying subscriber of my app.
Solution
- Namespace all method with
mailkick_
so we get methods likemailkick_subscribed?
- Only define shorthand aliases (
subscribed?
, etc) if no such methods exists.
What do you think?
Code example
module Mailkick
module Model
def has_subscriptions
class_eval do
alias_method :subscriptions, :mailkick_subscriptions unless method_defined? :subscriptions
alias_method :subscribe, :mailkick_subscribe unless method_defined? :subscribe
alias_method :unsubscribe, :mailkick_unsubscribe unless method_defined? :unsubscribe
alias_method :subscribed?, :mailkick_subscribed? unless method_defined? :subscribed?
has_many :mailkick_subscriptions, class_name: "Mailkick::Subscription", as: :subscriber
scope :mailkick_subscribed, ->(list) { joins(:mailkick_subscriptions).where(mailkick_subscriptions: {list: list}) }
def mailkick_subscribe(list)
mailkick_subscriptions.where(list: list).first_or_create!
nil
end
def mailkick_unsubscribe(list)
mailkick_subscriptions.where(list: list).delete_all
nil
end
def mailkick_subscribed?(list)
mailkick_subscriptions.where(list: list).exists?
end
end
end
end
end
Metadata
Metadata
Assignees
Labels
No labels