Hi, I am puzzlin for quite a while on this. I use find_by methods to retieve AR objects. In some cases find_by will return nil if there is no match. However I would like to have find_by return a default object instead. Is there a way to overload that particular find_by method? Or whats the best way to implement it. Thanks Jens -- Posted via http://www.ruby-forum.com/.
> I am puzzlin for quite a while on this. I use find_by methods to > retieve > AR objects. In some cases find_by will return nil if there is no > match. > However I would like to have find_by return a default object instead. > > Is there a way to overload that particular find_by method? Or whats > the > best way to implement it.My first thought is that overloading this is very dangerous as you completely lose the ability to hop into the console and run say User.find_by_login(''philip'') and *get* the ''philip'' user or nil. I could see some nasty side affects here. If it were me I''d either make it explicit in the code "Model.find_by_foo() || Model.get_default()" or extend AR to support find_by_xxx_or_default and then call it that way. Don''t forget though that "xxx" might also be "xxx_and_yyy_and_zzz". -philip
Thanks Philip. I used something similar to your suggestion "Model.find_by_foo() || Model.get_default()". I#d rather be explicit on that. Jens> > If it were me I''d either make it explicit in the code > "Model.find_by_foo() || Model.get_default()" or extend AR to support > find_by_xxx_or_default and then call it that way. Don''t forget though > that "xxx" might also be "xxx_and_yyy_and_zzz". > > -philip-- Posted via http://www.ruby-forum.com/.