Class: CustomDbDriver::Base
- Inherits:
-
Object
- Object
- CustomDbDriver::Base
- Defined in:
- lib/custom_db_driver/base.rb
Class Attribute Summary collapse
-
.model ⇒ Object
Returns the value of attribute model.
Class Method Summary collapse
- .belongs_to(attr_name, options = {}) ⇒ Object
- .create_asscociation(model, block) ⇒ Object
- .has_many(attr_name, options = {}) ⇒ Object
- .has_one(attr_name, options = {}) ⇒ Object
Class Attribute Details
.model ⇒ Object
Returns the value of attribute model.
4 5 6 |
# File 'lib/custom_db_driver/base.rb', line 4 def model @model end |
Class Method Details
.belongs_to(attr_name, options = {}) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/custom_db_driver/base.rb', line 42 def belongs_to(attr_name, ={}) [:class_name] ||= attr_name.to_s.camelize [:foreign_key] ||= "#{options[:class_name].underscore}_id" @model.class_eval do define_method(attr_name) do result = [:class_name].constantize.where("id" => self.send([:foreign_key])) result.first end end end |
.create_asscociation(model, block) ⇒ Object
6 7 8 9 |
# File 'lib/custom_db_driver/base.rb', line 6 def create_asscociation(model, block) @model = model class_eval(&block) end |
.has_many(attr_name, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/custom_db_driver/base.rb', line 11 def has_many(attr_name, = {}) [:class_name] ||= attr_name.to_s.singularize.camelize [:foreign_key] ||= "#{attr_name.to_s.singularize}_id" @model.class_eval do define_method(attr_name) do [:class_name].constantize.where([:foreign_key] => self.id) end end end |
.has_one(attr_name, options = {}) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/custom_db_driver/base.rb', line 21 def has_one(attr_name, = {}) [:class_name] ||= attr_name.to_s.camelize [:foreign_key] ||= "#{self.class.to_s.underscore}_id" [:primary_key] ||= "id" @model.class_eval do define_method(attr_name) do [:class_name].constantize.where([:foreign_key] => self.send([:primary_key])).try(:first) end define_method "create_#{attr_name}" do | = {}| .merge!([:foreign_key] => self.send([:primary_key])) [:class_name].constantize.create() end define_method "build_#{attr_name}" do | = {}| .merge!([:foreign_key] => self.send([:primary_key])) [:class_name].constantize.new() end end end |