Fix validates_uniqueness_of for SQL keywords [#23 state:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
This commit is contained in:
Alex MacCaw 2008-05-04 12:28:08 +01:00 committed by Pratik Naik
parent 0dabb5b7ab
commit 4cc594bd70
4 changed files with 15 additions and 1 deletions

View File

@ -640,7 +640,7 @@ module ActiveRecord
results = finder_class.with_exclusive_scope do
connection.select_all(
construct_finder_sql(
:select => "#{attr_name}",
:select => "#{connection.quote_column_name(attr_name)}",
:from => "#{finder_class.quoted_table_name}",
:conditions => [condition_sql, *condition_params]
)

View File

@ -5,6 +5,7 @@ require 'models/reply'
require 'models/person'
require 'models/developer'
require 'models/warehouse_thing'
require 'models/guid'
# The following methods in Topic are used in test_conditional_validation_*
class Topic
@ -493,6 +494,13 @@ class ValidationsTest < ActiveRecord::TestCase
end
end
def test_validate_uniqueness_with_columns_which_are_sql_keywords
Guid.validates_uniqueness_of :key
g = Guid.new
g.key = "foo"
assert_nothing_raised { !g.valid? }
end
def test_validate_straight_inheritance_uniqueness
w1 = IneptWizard.create(:name => "Rincewind", :city => "Ankh-Morpork")
assert w1.valid?, "Saving w1"

View File

@ -0,0 +1,2 @@
class Guid < ActiveRecord::Base
end

View File

@ -403,6 +403,10 @@ ActiveRecord::Schema.define do
create_table(t, :force => true) { }
end
create_table :guids, :force => true do |t|
t.column :key, :string
end
except 'SQLite' do
# fk_test_has_fk should be before fk_test_has_pk
create_table :fk_test_has_fk, :force => true do |t|