Thanks! Frankly speaking, I've decided to use java for this project.
It's not good to fight with framework's logic)

On Sep 8, 10:42 pm, Rick <[email protected]> wrote:
> NOTE:  This will only work with postgresql - need different code for
> mysql etc.
>
> This example mods the integer field :counter as a serial starting at 1
> and incrementing by 3.
> For some reason not known to me I haven't been able to figure out the
> way to say
>
> execute "ALTER TABLE simple_models ALTER COLUMN counter SET DEFAULT
> nextval('simple_models_counter_seq')"
>
> in the migration file.
>
> db/migrations/NNNNN_create_simple_models.rb
> -------------
>
> class CreateSimpleModels < ActiveRecord::Migration
>   def self.up
>     create_table :simple_models do |t|
>       t.string :name
>       t.integer :counter
>       t.timestamps
>     end
>     execute "CREATE SEQUENCE simple_models_counter_seq OWNED BY
> simple_models.counter INCREMENT BY 3 START WITH 1"
>   end
>
>   def self.down
>     drop_table :simple_models
>   end
> end
>
> -------------
> models/simple_model.rb
> -------------
>
> class SimpleModel < ActiveRecord::Base
>   validates_uniqueness_of :name
>   before_create :increment_counter
>
>   private
>
>   def increment_counter
>     value = ActiveRecord::Migration::execute "SELECT nextval
> ('simple_models_counter_seq')"
>     self.counter = value[0]["nextval"]
>   end
> end
>
> -------------
>
> On Sep 7, 6:29 am, adrianopol <[email protected]> wrote:
>
> > There is a table:
>
> > execute (<<-SQL)
> >   CREATE TABLE "tasks" (
> >     "id" serial primary key,
> >     "number" serial,
> >     "version" integer DEFAULT 0 NOT NULL,
> >     "latest_version" boolean DEFAULT 't' NOT NULL,
> >     "hidden" boolean DEFAULT 'f' NOT NULL,
> >     "type" character varying (1) NOT NULL,
> >     "created_at" timestamp
> >   );
> > SQL
>
> > I need the number field to be serial, i.e. to be automatically filled
> > when mising it in the hash for create method. I had to write sql-code,
> > because for postgresql adapter cannot create serial-fields. But in
> > this case when trying to add
>
> > task = Task.create ( :type => "c")
>
> > error is raised:
>
> > PGError: ERROR: null value in column "number" violates not-null
> > constraint
> > : INSERT INTO "tasks" ( "number", "latest_version", "type", "version",
> > "hidden", "created_at") VALUES (NULL, 't', E'c ', 0,' f ', '2009-09-07
> > 08:43:13.534476 ') RETURNING "id"
>
> > i.e. NULL is specified for number field. Can I exclude the number
> > field from the list for INSERT or maybe there is any other more
> > correct way to cope with it?
>
> > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to