ruby/datamapper: Refactor class methods to module
Posted
by DeSchleib
on Stack Overflow
See other posts from Stack Overflow
or by DeSchleib
Published on 2010-05-24T18:17:36Z
Indexed on
2010/05/24
18:21 UTC
Read the original article
Hit count: 307
Hello, i've the following code and tried the whole day to refactor the class methods to a sperate module to share the functionality with all of my model classes.
Code (http://pastie.org/974847):
class Merchant
include DataMapper::Resource
property :id, Serial
[...]
class << self
@allowed_properties = [:id,:vendor_id, :identifier]
alias_method :old_get, :get
def get *args
[...]
end
def first_or_create_or_update attr_hash
[...]
end
end
end
I'd like to archive something like:
class Merchant
include DataMapper::Resource
include MyClassFunctions
[...]
end
module MyClassFunctions
def get [...]
def first_or_create_or_update[...]
end
=> Merchant.allowed_properties = [:id]
=> Merchant.get( :id=> 1 )
But unfortunately, my ruby skills are to bad. I read a lot of stuff (e.g. here) and now i'm even more confused. I stumbled over the following two points:
alias_method
will fail, because it will dynamically defined in theDataMapper::Resource
module.- How to get a class method
allowed_properties
due including a module?
What's the ruby way to go?
Many thanks in advance.
© Stack Overflow or respective owner