On Tuesday, August 5, 2014 9:36:52 AM UTC-7, Paul Carew wrote:
>
> Thanks for taking a look. The following example should illustrate the 
> issue.
>
> require "sequel"
>
> # Setup Sequel connection to postgres
> DB = Sequel.connect('postgres://username:password@localhost/database_name')
> DB.extension :pg_array
>
> # Define the Record model
> class Record < Sequel::Model
>   plugin :json_serializer
> end
>
> # Create the records table if it doesn't exist
> if !DB.table_exists? :records
>   DB.create_table :records do
>     primary_key :id
>     text :name
>     integer :seenBy, :type => "integer[]"
>   end
> end
>

This is broken, as it creates the table after creating the model class. 
 Always create the table first.  However, that's not your issue.
 

>
> # JSON representations of data
> dataNew = {"name"=>"John Smith", "seenBy"=>["1"]}
> dataUpdate = {"name"=>"John Smith", "seenBy"=>["1", "2"]}
>
> #Create a new record
> newRecord = Record.new(dataNew)
> newRecord.save
>
> #Update record
>
> updatedRecord = Record.where(:id => newRecord.id)
> updatedRecord.update(dataUpdate)
>

This is Dataset#update, not Model#update, so an error is completely 
expected (datasets don't typecast, as they don't know the types of their 
columns).  You probably want:

 updatedRecord = Record.first(:id => newRecord.id)
updatedRecord.update(dataUpdate)

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to