Fetch data from heterogenous tables(Rails SQL views, SQL Union)

Let’s say you have a ‘cars’ table and a ‘bikes’ table, and the schema can not be changed. Some fields are the same, and you want to display ( paginate, search etc) a list with products that are both cars and bikes (from both the car and the bike models),ย sorted by their creation date.

This post is about how this can be accomplished using sql views.

Continue reading

Why You Shouldn’t Use Float for Currency (floating point issues – explained for Ruby and RoR)

This article is a response to https://vladzloteanu.wordpress.com/2010/01/06/ruby-on-rails-interview-questions-update/

It is a VERY BAD IDEEA to use floating point arithmetics to deal with currency. In most of the programming languages. Basically, because you’ll end up loosing money :). And this (on the great majority of cases) is not desirable ๐Ÿ™‚ .

I’ll show you some magic (that you may try at home):
~$ ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
~$ irb
irb(main):003:0> (10.12*100).to_i
=>; 1011

So, what just happened? Continue reading

Ruby on Rails Interview questions – update

Most of Google searches that hit my blog are about ‘ruby on rails interview questions‘.

Responding to this popular request ๐Ÿ˜‰ , I will post 3 more questions that are related.

1. What type of data would you use to represent currency?

2. Why is it not a good practice to use float for currency?

3. Explain the following behaviour:

~$ ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
~$ irb
irb(main):003:0> (10.12*100).to_i
=>; 1011

The answer – in my next post .

Rails Internationalization: currency format configuration

One of the nicest things in the built-in Rails internationalization features is the ability to format the currency according to the local culture (the number_to_currency method). For example, many european contries use ‘,’ as a separator and ‘.’ as a delimiter.

However, the examples presented in the help page (http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#M001684) are missing something essential.

 number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "")
 # => £1234567890,50
 number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u")
 # => 1234567890,50 £

Why should i need a helper method where i can set all those parameters by hand?

Digging in the source code, i found how those settings can be put in the locale yml config file. Below is an example from my french localization file.

fr:
  number:
    currency:
      format:
        delimiter: ','
        separator: '.'
        precision: 2
        format: '%n %u'

Ruby on Rails interview questions – part 2

Continuing the “RoR interview questions” sequel(part one here) , these are some general Rails concepts and technologies questions. Enjoy :).

Continue reading

Ruby on Rails interview questions – Part one – Ruby

Ruby

This is the first article on the RoR interview questions. The purpose is not necessary to be used to ‘cheat’ on an interview, but to present some tricky things in Ruby and RoR.

Some (the majority) of the questions do not yet have answers. I will be filling the blanks.. soon ๐Ÿ™‚

What is the duck typing?

The duck typing can be seen as one of the ruby implementation of polymorphism. The principle is: “If it walks like a duck and quacks like a duck, I would call it a duck.”. Below is an example of this principle (from http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html).

Continue reading