Ranger ses modèles


#1

Bonjour à tous,

Je me pose une question et j’aimerais avoir votre avis.

On arrive souvent avec des gros gros models sous Rails, genre des
user.rb qui sont interminables.

Est-ce que vous avez des best pratices à recommander pour gérer ça ?

Merci beaucoup pour vos retours !

Pierre


#2

On Tue, Feb 3, 2009 at 15:50, Pierre V. removed_email_address@domain.invalid
wrote:

Bonjour à tous,

Je me pose une question et j’aimerais avoir votre avis.

On arrive souvent avec des gros gros models sous Rails, genre des
user.rb qui sont interminables.

Est-ce que vous avez des best pratices à recommander pour gérer ça ?

J’utilise des modules que j’écris dans le répertoire ‘lib’ et que je
sépare en blocs de fonctionnalités.

Une fois ces modules écris, j’inclus/extend mes modèles avec. Ce qui
me permet d’avoir des fonctionnalités partagées entre les modèles,
sans pour autant dupliquer le code. Sans parler de la ré-utilisation
dans d’autres projets :wink:


http://fabien.jakimowicz.com


#3

Le 3 févr. 09 à 15:50, Pierre V. a écrit :

On arrive souvent avec des gros gros models sous Rails, genre des
user.rb qui sont interminables.

Est-ce que vous avez des best pratices à recommander pour gérer ça ?

Salut Pierre,

J’aime bien l’approche trouvée dans altered_beast du “concern_with” :

cf.
http://github.com/courtenay/altered_beast/blob/bd2322c7877d3f51daf9ea7320a25a0219896305/config/initializers/concerns.rb
class << ActiveRecord::Base
def concerned_with(*concerns)
concerns.each do |concern|
require_dependency “#{name.underscore}/#{concern}”
end
end
end

et dans le model user :
http://github.com/courtenay/altered_beast/blob/bd2322c7877d3f51daf9ea7320a25a0219896305/app/models/user.rb
class User < ActiveRecord::Base
concerned_with :states, :activation, :posting, :validation
end


#4

Le 3 février 2009 16:16, Arthur a écrit :

On arrive souvent avec des gros gros models sous Rails, genre des
user.rb qui sont interminables.

Est-ce que vous avez des best pratices à recommander pour gérer ça ?

J’aime bien l’approche trouvée dans altered_beast du “concern_with” :

Oui, c’est ce que DHH appelle des “concerns”, qu’il met dans
app/concerns
Techno-weenie a repris l’idée d’une manière un peu différente,
illustré comme l’indique Arthur, et comme le décrit Lifo :

http://m.onkey.org/2008/9/15/active-record-tips-and-tricks

http://github.com/courtenay/altered_beast/blob/bd2322c7877d3f51daf9ea7320a25a0219896305/app/models/user.rb
class User < ActiveRecord::Base
concerned_with :states, :activation, :posting, :validation
end

Henrik N. a le même concept sous un nom différent (augmentations)
formalisé par un plugin :

http://github.com/henrik/augmentations/tree/master

– Jean-François.


http://twitter.com/underflow_


#5

Bonjour,
Merci beaucoup à tous ceux qui m’ont répondu. C’était très gentil et les
solutions sont super.

Bon dimanche (et désolé de ne pas avoir répondu avant).

Merci

Pierre

2009/2/3 Jean-François Trân removed_email_address@domain.invalid