Module: Louisville::Extensions::Finder::RelationMethods
- Defined in:
- lib/louisville/extensions/finder.rb
Instance Method Summary collapse
Instance Method Details
#exists?(id = :none) ⇒ Boolean
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/louisville/extensions/finder.rb', line 85 def exists?(id = :none) id = id.id if ActiveRecord::Base === id return super(id) if Louisville::Util.numeric?(id) if String === id return true if super(louisville_config[:column] => id) return super(id) unless louisville_config.option?(:history) base, seq = Louisville::Util.slug_parts(id) Louisville::Slug.where(:slug_base => base, :slug_sequence => seq, :sluggable_type => ::Louisville::Util.polymorphic_name(name)).exists? elsif ActiveRecord::VERSION::MAJOR == 3 return super(id == :none ? false : id) else return super(id) end end |
#find_one(id) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/louisville/extensions/finder.rb', line 57 def find_one(id) id = id.id if ActiveRecord::Base === id return super(id) if Louisville::Util.numeric?(id) seq_column = "#{louisville_config[:column]}_sequence" if self.column_names.include?(seq_column) base, seq = Louisville::Util.slug_parts(id) record = self.where(louisville_config[:column] => base, seq_column => seq).first else record = self.where(louisville_config[:column] => id).first end return record if record if louisville_config.option?(:history) base, seq = Louisville::Util.slug_parts(id) record = Louisville::Slug.where(:slug_base => base, :slug_sequence => seq, :sluggable_type => ::Louisville::Util.polymorphic_name(self)).select(:sluggable_id).first super(record.try(:sluggable_id) || id) else return super(id) end end |