Class: AdminData::ActiveRecordUtil
- Inherits:
-
Object
- Object
- AdminData::ActiveRecordUtil
- Defined in:
- lib/admin_data/active_record_util.rb
Class Method Summary collapse
-
.declared_belongs_to_association_names(klass) ⇒ Object
class User belongs_to :club end.
-
.declared_habtm_association_names(klass) ⇒ Object
class User has_and_belongs_to_many :clubs end.
-
.declared_has_many_association_names(klass) ⇒ Object
class User has_many :cars end.
-
.declared_has_one_association_names(klass) ⇒ Object
class User has_one :car end.
-
.delcared_association_names_for(klass, association_type) ⇒ Object
returns declared association names like #=> [‘comments’] #=> [‘positive_comments’] #=> [‘negative_comments’].
-
.habtm_klasses_for(klass) ⇒ Object
returns an array of classes.
-
.has_association_info?(k) ⇒ Boolean
returns false if the given Klass has no association info.
-
.klass_for_association_type_and_name(klass, association_type, association_name) ⇒ Object
returns a class or nil.
Class Method Details
.declared_belongs_to_association_names(klass) ⇒ Object
class User
belongs_to :club
end
User.declared_belongs_to_association_names(Club) #=> [‘club’]
20 21 22 |
# File 'lib/admin_data/active_record_util.rb', line 20 def self.declared_belongs_to_association_names(klass) delcared_association_names_for(klass, :belongs_to).map(&:name).map(&:to_s) end |
.declared_habtm_association_names(klass) ⇒ Object
class User
has_and_belongs_to_many :clubs
end
User.declared_habtm_association_names(Club) #=> [‘clubs’]
10 11 12 |
# File 'lib/admin_data/active_record_util.rb', line 10 def self.declared_habtm_association_names(klass) delcared_association_names_for(klass, :has_and_belongs_to_many).map(&:name).map(&:to_s) end |
.declared_has_many_association_names(klass) ⇒ Object
class User
has_many :cars
end
User.declared_has_many_association_names(Car) #=> [‘cars’]
40 41 42 |
# File 'lib/admin_data/active_record_util.rb', line 40 def self.declared_has_many_association_names(klass) delcared_association_names_for(klass, :has_many).map(&:name).map(&:to_s) end |
.declared_has_one_association_names(klass) ⇒ Object
class User
has_one :car
end
User.declared_has_one_association_names(Car) #=> [‘car’]
30 31 32 |
# File 'lib/admin_data/active_record_util.rb', line 30 def self.declared_has_one_association_names(klass) delcared_association_names_for(klass, :has_one).map(&:name).map(&:to_s) end |
.delcared_association_names_for(klass, association_type) ⇒ Object
returns declared association names like #=> [‘comments’] #=> [‘positive_comments’] #=> [‘negative_comments’]
48 49 50 51 52 |
# File 'lib/admin_data/active_record_util.rb', line 48 def self.delcared_association_names_for(klass, association_type) klass.name.camelize.constantize.reflections.values.select do |value| value.macro == association_type end end |
.habtm_klasses_for(klass) ⇒ Object
returns an array of classes
class User
has_and_belongs_to_many :clubs
end
ActiveRecordUtil.habtm_klasses_for(User) #=> [Club]
62 63 64 65 66 |
# File 'lib/admin_data/active_record_util.rb', line 62 def self.habtm_klasses_for(klass) declared_habtm_association_names(klass).map do |assoc_name| klass_for_association_type_and_name(klass, :has_and_belongs_to_many, assoc_name) end end |
.has_association_info?(k) ⇒ Boolean
returns false if the given Klass has no association info. Otherwise returns true.
86 87 88 89 90 91 |
# File 'lib/admin_data/active_record_util.rb', line 86 def self.has_association_info?(k) AdminData::ActiveRecordUtil.declared_belongs_to_association_names(k).any? || AdminData::ActiveRecordUtil.declared_has_many_association_names(k).any? || AdminData::ActiveRecordUtil.declared_has_many_association_names(k).any? || AdminData::ActiveRecordUtil.declared_habtm_association_names(k).any? end |
.klass_for_association_type_and_name(klass, association_type, association_name) ⇒ Object
returns a class or nil
class User
has_many :comments
end
ActiveRecordUtil.klass_for_association_type_and_name(User, :has_many, ‘comments’) #=> Comment
76 77 78 79 80 81 |
# File 'lib/admin_data/active_record_util.rb', line 76 def self.klass_for_association_type_and_name(klass, association_type, association_name) data = klass.name.camelize.constantize.reflections.values.detect do |value| value.macro == association_type && value.name.to_s == association_name end data.klass if data # output of detect from hash is an array with key and value end |