Hello,
I am getting strange results with the following code:
  def self.process_product(supplier_productid)
    local_product = Product.find(:first, :conditions => ["supplierid 9
and supplier_productid = :id", {:id => supplier_productid}])
    if local_product
      local_product.update_attributes(attributes)
      begin
        supplier_stock = SupplierStock.find(local_product.productid)
      rescue Exception => e
        puts e.to_s
        supplier_stock = SupplierStock.new(
          :id => local_product.productid,
          :yesterday_stock => stock || -999,
          :current_stock => stock || -999
        )
###        supplier_stock[:productid] = local_product.productid
        supplier_stock.save
      else
        supplier_stock.yesterday_stock = supplier_stock.current_stock
        supplier_stock.current_stock = stock
        supplier_stock.save
      end
    else
      ...
The database information:
###################################
db=# \d supplier_stock
         Table "public.supplier_stock"
     Column      |  Type   |     Modifiers
-----------------+---------+--------------------
 productid       | integer | not null
 current_stock   | integer | not null default 0
 yesterday_stock | integer | not null default 0
Indexes:
    "supplier_stock_pkey" primary key, btree (productid)
Foreign-key constraints:
    "supplier_stock_productid_fkey" FOREIGN KEY (productid) REFERENCES
supplier_products(productid) ON DELETE CASCADE
db=# select * from supplier_products_productid_seq;
          sequence_name          | last_value | increment_by |
max_value      | min_value | cache_value | log_cnt | is_cycled |
is_called
---------------------------------+------------+--------------
+---------------------+-----------+-------------+---------+-----------
+-----------
 supplier_products_productid_seq |     464931 |            1 |
9223372036854775807 |         1 |           1 |      32 | f         |
t
(1 row)
###################################
And the error (occurs on the first call to save, in the exception
handling code):
RuntimeError: ERROR     C23502  Mnull value in column "productid"
violates not-null constraint  FexecMain.c     L1782
RExecConstraints: INSERT INTO supplier_stock ("yesterday_stock",
"current_stock") VALUES(-999, -999)
>From my understanding of Rails, when I insert to the supplier_stock
table, the primary key (defined as productid in the database table and
the class both) should be determined automatically whether I
define :id in the SupplierStock object''s new method or not. You will
notice I have commented one line of code. Uncommenting that line
eliminates the error. Why is it when I explicitly specify :productid
outside the new method that it works? Additionally, when I create the
SupplierStock object, if I immediately print out the keys and values
after the object is created, :id is not defined at all. Any insights?
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---