Split ActiveRecord::Base model

You’ve explained what you’re trying to do, but not why - explaining why you want to do this might make it easier to figure out how to make it happen.

–Matt Jones

Thx for your reply. I want to make the models more light. I want to make models what will only access the database (CRUD), without callbacks and the other stuffs it loads.

Not to be rude, but this is still “what” you want to do.

Why are you trying to make the models “light”? Are you working in a resource-constrained environment? Splitting off the callback system is going to break plenty of stuff - for instance, :dependent => :destroy on associations is implemented with a callback. Would it be sufficient to simply not use features you don’t want?

–Matt Jones

Im trying to make my own solution. Instead of working with MVC, im working with another patterns as well. And i want ActiveRecord::Base model only to interact with the database and nothing else. My business logic is going inside another models.

Sorry if i wasn’t clear enough before and thanks again for your time. =p

If that's the case, maybe you just want to work with the appropriate data base gem/driver directly? (mysql2, sqlite3, postgres, etc)

Well, its an option. But i would like the code readbility of the active_record methods and some good funcionalities like the finders. Im still using rails on my projects, i just want to make sure that if somebody that is working on this project too, doesnt use callbacks and stuffs. I want the models only to access the database.

If you don't use the callback and stuffs, do they actually get loaded? I thought ActiveRecord only loaded the stuff that is getting used...

Also, hmm, wondering where you are on this project to actually see that there is a practical need to worry about this at this point. Have you seen performance benchmarks on your app already that show this is now a problem? What I've found is that the stuff you seem to like, the ORMish stuff and finders, actually ends up causing some serious performance bottlenecks if you don't think about how you gather data in your application, and can generate some horrendous looking SQL.

Im not worried about performance. Im worried that i want to use it to access the database only. All the other logics i want in a separate class. The callback logics i’m moving to a service. Some other logics to a decorator and accessor.

I want to do this only to make sure that a person that does not know the flow of developing can’t use it in a wrong way. I have a project with this idea on github, but right now i didnt push any decorator, accessor, or model related logic. I have pushed only the work i made on controller to use service.

But still, if u want to have a look at it, here it go: https://github.com/plribeiro3000/blog

Still, i just asked this here, because i thought that someone had tried to do it before. In case not, i will try by myself.

Uh, just checking -- you know Rails has a flag to generate a new app without ActiveRecord, yes?

Have you considered using an alternate ORM, e.g. DataMapper?

Yes, i have considered it. But before i just want to know if is possible to do this using ActiveRecord. Is it possible to do or not?

Dunno, never had a reason to try :slight_smile:

I think the real question is probably more like "Will the amount of work required to remove or disable functionality from ActiveRecord be worth it in the long run?" and only you can answer that.

Good luck,

Well, i would like to test it anyway. I think that if it could be done, it will worth. Im asking here exactly to not loose time on something that can’t be done. =p Anybody that have a more deep knowledge on this topic can answer me?