簡體   English   中英

Rails更新記錄列僅更新部分字符串

[英]Rails updating a record column is updating only part of the string

我有一個空的列,稱為contractor_id,類型為UUID。 現在,我正在嘗試使用其他UUID更新此列,以供參考。 示例:173028f7-add5-4ddc-88ef-efb89ce841ba

但是,發生的是,更新后,contractor_id列僅包含173028,而其余的不存在! 到底是怎么回事?

這是代碼。

puts "current user id"        
puts current_user.id
#=> 173028f7-add5-4ddc-88ef-efb89ce841ba

    if Cleaner.invite!(:email => params[:email], :name => params[:name])

    Cleaner.find_by_email(params[:email]).update_attributes(contractor_id: current_user.id)

這是顯示在控制台中的更新查詢。

(0.4ms)  BEGIN
  SQL (1.1ms)  UPDATE "cleaners" SET "contractor_id" = $1, "updated_at" = $2 WHERE "cleaners"."id" = $3  [["contractor_id", "173028f7-add5-4ddc-88ef-efb89ce841ba"], ["updated_at", 2017-05-15 18:22:15 +0530], ["id", "6389e05d-3158-4244-8eea-c4c343284962"]]
   (24.1ms)  COMMIT

所以這是schema.rb

 create_table "cleaners", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
 t.uuid     "contractor_id"
 t.index ["contractor_id"], name: "index_cleaners_on_contractor_id", using: :btree


 create_table "contractors", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|

contractor_id是整數類型。 所以我運行了此遷移,將其更改為uuid類型,以便可以存儲uuid的類型。 如您所見,它也反映在上面的架構中。

def change
    remove_reference :cleaners, :contractor
    add_reference :cleaners, :contractor, foreign_key: true, index: true, type: :uuid
end

此外,PS,current_user.id是承包商的ID。 為了清楚起見。

是-答案已在評論中列出,但您需要使用字符串進行存儲。

請按照此處更改表的步驟操作: https : //www.postgresql.org/docs/9.1/static/sql-altertable.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM