Thanks Dave, does that mean I'm no longer a novice since I found God? :)

Yes I always though I was doing it correctly by putting everything related 
to say Order into Order. So I assumed that getting an Order list from User 
should be a method placed inside Order. Then I noticed it expects to get 
param[:id] as User.id so I was tempted to put it back to User (the God 
object). How do reckon I solve this Order list problem?

I've been reading a lot about Slim Controller, Fat Model and now looking at 
my codebase with new lenses but still pretty hard to move stuff into Model. 
I saw in one Railscast example, Send_password_reset is inside User.rb. Then 
I went WTF and then soon discovered the Model layer wasn't meant to map 
database and can hold logic. Right now I still have a lot of UserMailer 
stuff in my Controller layer. But I see the tunnel light could be from here:
- 
http://stackoverflow.com/questions/14044681/fat-models-and-skinny-controllers-sounds-like-creating-god-models

I'm also exploring model scope and Has_Scope gem to reduce the amount of 
methods in Controller. I'm trying to avoid STI and polymorphism stuff which 
seems to have me change current_user paths to some weird stuff. 

And then there is ActiveSupport::Concern to extend the Controller
http://stackoverflow.com/questions/18745021/the-best-way-to-split-up-a-large-rails-controller


On Monday, March 3, 2014 11:49:31 PM UTC+8, Dave Aronson wrote:
>
> On Mon, Mar 3, 2014 at 5:36 AM, Colin Law <[email protected] <javascript:>> 
> wrote: 
>
> > On 3 March 2014 09:18, Brandon <[email protected] <javascript:>> wrote: 
> ... 
> >> But it seems that User controller will be pretty FAT over time. 
> > 
> > Why? 
>
> Because User has a classic tendency to become a God Object. :-) 
>
> Brandon, sorry if I'm repeating stuff that came earlier, I didn't pay 
> much attention to this thread until the above exchange caught my eye. 
>
> The User class tends to accumulate a lot of crud (not to be confused 
> with CRUD), becoming what we call a God Object, one that sees, knows, 
> and tells all. 
>
> To combat that tendency, remember the Single Responsibility Principle, 
> and look for clear dividing lines to separate responsibilities.  What 
> I usually do is keep User responsible only for logging in and out, so 
> it usually contains only username, encrypted password, and (only for 
> purposes of sending password reset tokens and suchlike) an email 
> address.  Any other personal info, like a "real" name, address, phone 
> number, biography, picture, etc. goes in a Profile object that 
> belongs_to that User.  Other info for specific aspects of using the 
> system, like availability and desired salary if it's a job board, go 
> in more specific profiles, like JobSeekerProfile or JobPosterProfile. 
>
> -Dave 
>
> -- 
> Dave Aronson, the T. Rex of Codosaurus LLC (www.codosaur.us); 
> FREELANCE SOFTWARE DEVELOPER, AVAILABLE AS OF MARCH 1st 2014; 
> creator of Pull Request Roulette, at PullRequestRoulette.com. 
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/9d638dbd-a029-4e20-beb5-c16a8d6e7a92%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to