class Syncify::Hint::BasicHint
Attributes
allowed[RW]
allowed?[RW]
association[RW]
from_class[RW]
to_class[RW]
Public Class Methods
new(from_class: nil, association: nil, to_class: nil, allowed:)
click to toggle source
# File lib/syncify/hint/basic_hint.rb, line 7 def initialize(from_class: nil, association: nil, to_class: nil, allowed:) @from_class = from_class @association = association @to_class = to_class @allowed = allowed end
Public Instance Methods
applicable?(candidate_association)
click to toggle source
# File lib/syncify/hint/basic_hint.rb, line 14 def applicable?(candidate_association) evaluate_from(candidate_association) && evaluate_association(candidate_association) && evaluate_to_class(candidate_association) end
Private Instance Methods
evaluate_association(candidate_association)
click to toggle source
# File lib/syncify/hint/basic_hint.rb, line 31 def evaluate_association(candidate_association) return true if association.nil? if association.is_a? Regexp candidate_association.name =~ association ? true : false else Array.wrap(association).include? candidate_association.name end end
evaluate_from(candidate_association)
click to toggle source
# File lib/syncify/hint/basic_hint.rb, line 26 def evaluate_from(candidate_association) from_class.nil? || Array.wrap(from_class).include?(candidate_association.active_record) end
evaluate_to_class(candidate_association)
click to toggle source
# File lib/syncify/hint/basic_hint.rb, line 41 def evaluate_to_class(candidate_association) return true if to_class.nil? if candidate_association.polymorphic? associated_classes = Syncify::Association::PolymorphicAssociation.identify_to_classes( candidate_association.active_record, candidate_association.name ) (Array.wrap(to_class) & associated_classes).any? else Array.wrap(to_class).include?(candidate_association.klass) end end