On Sun, Jan 5, 2014 at 5:18 PM, Jacob Carlborg <d...@me.com> wrote: > Just for the record. In Rails, that's the old, now discourage, Rails 2 > syntax.
I didn't know that, thanks. I read it during the holidays in Martin Fowler's book on DSL, but indeed that book is from 2005, IIRC. > In Rails 3 and later the following syntax is preferred: > > Table.where(first_name: "foo").first > > Which in D would look like: > > Table.where(["first_name": "foo"]).first; Yes, using AA is a nice idea, which avoids introducing first_name in the current scope. Some other possibilities could be: Table.where!(e => e.first_name == "foo").first; // Similar to std.range.filter Table.where.first_name!(e => e == "foo").first; Table.where((string first_name) => first_name == "foo").first; // By extracting the parameter name The syntax is heavier than your example, but some nice logic can put into a closure. Some also advocate: Table.where.first_name.equals("foo").first; But I find it a bit too clunky.