[英]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.