Method: Sohm::Model.reference
- Defined in:
- lib/sohm.rb
.reference(name, model) ⇒ Object
A macro for defining an attribute, an index, and an accessor for a given model.
Example:
class Post < Sohm::Model
reference :user, :User
end
# It's the same as:
class Post < Sohm::Model
attribute :user_id
index :user_id
def user
User[user_id]
end
def user=(user)
self.user_id = user.id
end
def user_id=(user_id)
self.user_id = user_id
end
end
751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 |
# File 'lib/sohm.rb', line 751 def self.reference(name, model) reader = :"#{name}_id" writer = :"#{name}_id=" attributes << reader unless attributes.include?(reader) index reader define_method(reader) do @attributes[reader] end define_method(writer) do |value| @attributes[reader] = value end define_method(:"#{name}=") do |value| send(writer, value ? value.id : nil) end define_method(name) do model = Utils.const(self.class, model) model[send(reader)] end end |