…or: how to put class scope to use
The class scope, i.e. the space inside class declaration, but outside method definitions, is a no man’s land in many languages (particularly in Java). By this I mean that you can define methods, variables, and other classes there and you can even execute some code (in variable initializations) but nothing more. Fortunately, in Ruby empty space between method definitions can be filled with all kinds of useful, executable code. Let’s check a few examples.
One of the many cool things of Ruby on Rails are magic ﬁnders, or Dynamic attribute-based ﬁnders as the documentation calls them. Thanks to them we can write:
User.find(:first, ['login = ? and status = ?', some_login, 1])
The ﬁrst form is shorter and easier for human to parse.
Unfortunately, we can only combine attributes using
and operator, but the possibility to use
not operators would also be nice. And, as always when using Ruby on Rails, when we ﬁnd that library is lacking some feature, we can easily add it. Let’s see how to do it.