Skip to content

Commit

Permalink
Refactoring: Assert readable by respond_to?
Browse files Browse the repository at this point in the history
Belongs to #61
  • Loading branch information
ledermann committed Sep 27, 2015
1 parent 869ed25 commit a9a1d3a
Showing 1 changed file with 4 additions and 15 deletions.
19 changes: 4 additions & 15 deletions lib/unread/reader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,13 @@ module Unread
module Reader
module ClassMethods
def assert_readable(readable)
assert_readable_class

unless ReadMark.readable_classes.include?(readable.class) or is_single_table_inheritance?(readable.class)
raise ArgumentError, "Class #{readable.class.name} is not registered by acts_as_readable."
unless readable.respond_to?(:mark_as_read!)
raise ArgumentError, "Class #{readable.class} is not registered by acts_as_readable."
end
raise ArgumentError, "The given #{readable.class.name} has no id." unless readable.id
end

def assert_readable_class
raise RuntimeError, 'There is no class using acts_as_readable.' unless ReadMark.readable_classes.try(:any?)
end

def is_single_table_inheritance?(readable)
readable.ancestors.each do |ancestor|
return true if ReadMark.readable_classes.include?(ancestor) and ancestor.table_name == readable.table_name
unless readable.id
raise ArgumentError, "The given #{readable.class} has no id."
end

false
end
end

Expand Down

0 comments on commit a9a1d3a

Please sign in to comment.