KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I found out that using where with symbol :my_id => nil and using old school one with ? is different. Could anyone explain me why? MyTable.where("my_id = ? ", nil).first SELECT `my_tables`.* FROM `my_tables` WHERE (my_id = NULL ) LIMIT 1 Does not get any data MyTable.where(:my_id => nil).first SELECT `my_tables`.* FROM `my_tables` WHERE (`my_tables`.`my_id` IS NULL) LIMIT 1 Get data which has my_id is null. What is the best practise to use in rails? I think I didn't make clear about my question. In my rails application, request parameter is nil. Existing coding is MyTable.where(:my_id => params[:id]).first In table, there are lots of records which have my_id is null. Therefore, the first record from table is pick up without realizing. First of all, yes it is the problem with unclean data in table. To solve this problem. I find two solutions Solution 1 if params[:id].present? MyTable.where(:my_id => params[:id]).first end Solution 2 MyTable.where("my_id = ? ", nil).first As you know, if we put (if condition more and more), our application will get slower and it will not be functional programming. When I try solution 2, I get surprised because I am expecting it should give same result.
Tags (comma-separated)
Save Edits
Cancel