Set address_column attribute using address_column instead of the name of the column

1.0
Fernando Blat 14 years ago
parent c7229e3783
commit 33274b357d

@ -208,6 +208,9 @@ class Table < Sequel::Model(:user_tables)
def insert_row!(raw_attributes)
primary_key = nil
if raw_attributes[:address_column] && address_column
raw_attributes[address_column] = raw_attributes.delete(:address_column)
end
owner.in_database do |user_database|
schema = user_database.schema(name.to_sym).map{|c| c.first}
attributes = raw_attributes.dup.select{ |k,v| schema.include?(k.to_sym) }
@ -236,6 +239,9 @@ class Table < Sequel::Model(:user_tables)
def update_row!(row_id, raw_attributes)
rows_updated = 0
if raw_attributes[:address_column] && address_column
raw_attributes[address_column] = raw_attributes.delete(:address_column)
end
owner.in_database do |user_database|
schema = user_database.schema(name.to_sym).map{|c| c.first}
attributes = raw_attributes.dup.select{ |k,v| schema.include?(k.to_sym) }

@ -315,6 +315,24 @@ describe Table do
("%.3f" % query_result[:rows][0][:lon]).should == ("%.3f" % lon)
("%.3f" % query_result[:rows][0][:lat]).should == ("%.3f" % lat)
end
it "should accept insert and update address_column if an attribute address_column is set" do
user = create_user
table = new_table
table.user_id = user.id
table.force_schema = "address varchar"
table.save
table.reload
table.set_address_column!(:address)
pk = table.insert_row!({:address_column => "Calle Santa Ana 1"})
query_result = user.run_query("select address from #{table.name} where cartodb_id = #{pk} limit 1")
query_result[:rows][0][:address].should == "Calle Santa Ana 1"
table.update_row!(pk, {:address_column => "Calle Santa Ana 2"})
query_result = user.run_query("select address from #{table.name} where cartodb_id = #{pk} limit 1")
query_result[:rows][0][:address].should == "Calle Santa Ana 2"
end
it "should increase the tables_count counter" do
user = create_user

Loading…
Cancel
Save