Typically when writing a model in Rails you use a DSL to setup various aspects of derived objects, for example:
class Question < ActiveRecord::Base
has_one :category
validates_presence_of :category
end
In this case, “has_one” and “validates_presence_of” create associations and validation call backs on models instantiated from Question.
I want to add a new method called “parent” to be used when defining a class:
class Question
attr_accessor :category
parent :category
end
q = Question.new
q.category = 'a category'
puts q.parent
-> 'a category'
So when objects are instantiated from class, they should have the method “parent” defined.
How do I do this? My first thought was to use a module, but this isn’t an instance method, or a class method.
I believe this is what you are looking for:
Which produces:
What this does is add a class method
parentthat will define the class variable@parent, when an instance calls theparentin theInstanceMethodthe@parentsymbol (here iscategory) is called.