簡體   English   中英

為什么鏈接模型查詢/分配在Rails控制台中不起作用?

[英]Why doesn't chaining Model queries / assignments work in rails console?

在rails控制台中這是如何工作的:

foo = Ad.find(2)
foo.user = User.find(1)
foo.user # => #<User id: 1, name: "john">

但這不是嗎?

Ad.find(2).user = User.find(1)
Ad.find(2).user  # => nil

因為每次編寫Ad.find(2)它都會返回ID為2的Ad類的新實例,並且您的代碼正在更改該實例上的關聯User,但從不保存更改 所以在這一行:

Ad.find(2).user = User.find(1)

您獲取ID為2的Ad實例,則將該實例的user關聯設置為User.find(1) ,但此更改永遠不會保存到數據庫,並且在語句結束時丟失。 在下一行:

Ad.find(2).user  # => nil

您只是在獲取ID為2的Ad的另一個實例,但是由於之前的更改從未保存到數據庫中,因此usernil

就像您在第一個代碼段中所顯示的那樣,您必須使用局部變量臨時保留對您的Ad實例的引用,以便對其調用.save才能持久保存到數據庫。 這應該工作:

foo = Ad.find(2)
foo.user = User.find(1)
foo.save
Ad.find(2).user  # => #<User id: 1>

暫無
暫無

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

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