From: Brian Candler Date: 2007-05-12T01:19:26+09:00 Subject: Re: Is there a possibility to include methods of a class? On Sat, May 12, 2007 at 12:30:00AM +0900, Bernd Burnt wrote: > This is the workaround I just had so far, and now I want to get rid of > it. > > I have two classes: > class Myclass < ActiveRecord::Base > def self.find(number) > Anotherclass.find(number) > end > > class Anotherclass < SAP4Rails::Base > def self.find(number) > do something > end > > But this solution to me seems to be so un-ruby! You seem to be doing something very strange in the above code. You are replacing one of ActiveRecord::Base's most fundamental operations - load from database by ID - with something which does something completely different. Are you also going to overwrite the save and update methods? In which case, what functionality from ActiveRecord::Base do you actually want to keep? I am guessing that SAP4Rails is some sort of remote-procedure call wrapper. That is, an instance of SAP4Rails::Base represents an object on some remote SAP server. If that's true, I don't see how it makes sense to try to mix that with another object which represents a row in a local SQL database. If Myclass represents something which may exist in the local database and/or in the remote SAP system, then I'd very much go for delegation. class MyDb < ActiveRecord::Base; end class MySap < SAP4Rails::Base; end class Myclass def self.find(number) @rec = MyDb.find(number) @sap = MySap.find(number) end end Then you are making it explicit that you are talking about two different things, and you can implement useful operations (such as copy data from one to the other) Regards, Brian.