Guest User

https://github.com/drnic/composite_primary_keys/issues/148

a guest
Mar 1st, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.50 KB | None | 0 0
  1. diff --git a/lib/composite_primary_keys/relation/batches.rb b/lib/composite_primary_keys/relation/batches.rb
  2. index 8a93960..38b6c9c 100644
  3. --- a/lib/composite_primary_keys/relation/batches.rb
  4. +++ b/lib/composite_primary_keys/relation/batches.rb
  5. @@ -23,7 +23,13 @@ module CompositePrimaryKeys
  6.          # CPK
  7.          #records = relation.where(table[primary_key].gteq(start)).all
  8.          self.primary_key.each do |key|
  9. -          relation = relation.where(table[key].gteq(start))
  10. +          condition = case relation.columns_hash[key.to_s].type
  11. +            when :string
  12. +              table[key].not_eq ''
  13. +            when :integer
  14. +              table[key].gteq start
  15. +          end
  16. +          relation = relation.where(condition)
  17.          end
  18.          records = relation.all
  19.  
  20. diff --git a/test/fixtures/db_definitions/postgresql.sql b/test/fixtures/db_definitions/postgresql.sql
  21. index 1990124..6e507a3 100644
  22. --- a/test/fixtures/db_definitions/postgresql.sql
  23. +++ b/test/fixtures/db_definitions/postgresql.sql
  24. @@ -192,3 +192,11 @@ create table employees_groups (
  25.    employee_id int not null,
  26.    group_id int not null
  27.  );
  28. +
  29. +create table titles (
  30. +    entity character varying(255),
  31. +    entity_id integer,
  32. +    lang_id integer,
  33. +    title text,
  34. +    primary key (entity, entity_id, lang_id)
  35. +);
  36. \ No newline at end of file
  37. diff --git a/test/fixtures/title.rb b/test/fixtures/title.rb
  38. new file mode 100644
  39. index 0000000..a11b726
  40. --- /dev/null
  41. +++ b/test/fixtures/title.rb
  42. @@ -0,0 +1,5 @@
  43. +class Title < ActiveRecord::Base
  44. +  belongs_to :user
  45. +  attr_accessible :entity, :entity_id, :title
  46. +  self.primary_keys = :entity, :entity_id, :lang_id
  47. +end
  48. diff --git a/test/fixtures/titles.yml b/test/fixtures/titles.yml
  49. new file mode 100644
  50. index 0000000..8df48e4
  51. --- /dev/null
  52. +++ b/test/fixtures/titles.yml
  53. @@ -0,0 +1,11 @@
  54. +title_1:
  55. +  entity: 'agelimits'
  56. +  entity_id: 1
  57. +  lang_id: 1
  58. +  title: '16+'
  59. +
  60. +title_2:
  61. +  entity: 'shows'
  62. +  entity_id: 1
  63. +  lang_id: 1
  64. +  title: 'Second'
  65. diff --git a/test/test_different_types.rb b/test/test_different_types.rb
  66. new file mode 100644
  67. index 0000000..b9dbc51
  68. --- /dev/null
  69. +++ b/test/test_different_types.rb
  70. @@ -0,0 +1,11 @@
  71. +require File.expand_path('../abstract_unit', __FILE__)
  72. +
  73. +class TestDifferentTypes < ActiveSupport::TestCase
  74. +  fixtures :titles
  75. +
  76. +  def test_find_each
  77. +    title = ''
  78. +    Title.where( entity: 'agelimits' ).find_each { |i| title = i.title }
  79. +    assert_equal( title, '16+' )
  80. +  end
  81. +end
  82. \ No newline at end of file
Add Comment
Please, Sign In to add comment