Class: Block
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Block
- Defined in:
- app/models/block.rb
Class Method Summary collapse
- .compare_delivery_date(a, b) ⇒ Object
- .psql_date_regex ⇒ Object
- .sort_by_delivery_date(collection = self.all) ⇒ Object
- .sql_by_address ⇒ Object
- .sql_by_delivery_date ⇒ Object
- .sql_by_lease_start ⇒ Object
Instance Method Summary collapse
Class Method Details
.compare_delivery_date(a, b) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/models/block.rb', line 34 def compare_delivery_date(a,b) begin date_a = a.delivery_date.to_date rescue date_a = Date.new end begin date_b = b.delivery_date.to_date rescue date_b = Date.new end date_a <=> date_b end |
.psql_date_regex ⇒ Object
50 51 52 |
# File 'app/models/block.rb', line 50 def psql_date_regex '\'\d{1,2}\s+\w{3}\s+\d{2,4}\'' end |
.sort_by_delivery_date(collection = self.all) ⇒ Object
30 31 32 |
# File 'app/models/block.rb', line 30 def sort_by_delivery_date(collection=self.all) collection.sort { |a,b| compare_delivery_date(a,b) } end |
.sql_by_address ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'app/models/block.rb', line 80 def sql_by_address case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym when :mysql2 'concat(blocks.street, blocks.no)' when :postgresql '(blocks.street || blocks.no)' end end |
.sql_by_delivery_date ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/block.rb', line 54 def sql_by_delivery_date case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym when :mysql2 # mysql does not support (col1, col2) asc|desc 'str_to_date(blocks.delivery_date, \'%d %M %Y\'), str_to_date(blocks.lease_start, \'%d %M %Y\')' when :postgresql # trick to allow non-dates to be sorted ahead %Q{( to_date(substring(blocks.delivery_date || \'01 Jan 1900\' from #{psql_date_regex}), \'DD Mon YYYY\'), to_date(substring(blocks.lease_start from #{psql_date_regex}), \'DD Mon YYYY\') )} end end |
.sql_by_lease_start ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/models/block.rb', line 68 def sql_by_lease_start case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym when :mysql2 'str_to_date(blocks.lease_start, \'%d %M %Y\')' when :postgresql %Q{( to_date(substring(blocks.lease_start from #{psql_date_regex}), \'DD Mon YYYY\'), substring(blocks.lease_start from \'\\w+\') )} end end |
Instance Method Details
#address ⇒ Object
9 10 11 |
# File 'app/models/block.rb', line 9 def address "#{no} #{street}" end |
#long_address ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/models/block.rb', line 13 def long_address address .gsub('Rd','Road') .gsub('Nth','North') .gsub('Ave','Avenue') .gsub('St','Street') .gsub('Ctrl','Central') .gsub('Jln','Jalan') .gsub('Lor ','Lorong ') .gsub('Upp ','Upper ') .gsub('Hts','Heights') .gsub('Gdn','Garden') .gsub('Bt','Bukit') .gsub("C'Wealth","Commonwealth") end |