簡體   English   中英

在Rails中引用新創建的對象

[英]Reference a newly created object in Rails

我想在創建對象后獲取其ID,如下所示:

 post = Post.create_with_data(data)
 post_id = post.id #id of the post object just created in previous line

但是,post_id為nil 我如何實現我的目標? 我不想使用Post.last ,因為當多個用戶嘗試同時創建帖子時,它可能會導致數據沖突。

謝謝。

在您的create_with_data ,您是否save了對象? 在保存之前,該id為nil。

嘗試這個:

post = Post.create!({attribute: 'value'})
post_id = post.id

我不確定create_with_data方法的作用,但似乎無法保存您的帖子。

class Post < ActiveRecord::Base
  ...
  def data=(data)
    # ... use data here
  end
end

Post.create(data: data)

它更清潔,它將為您節省電話! 您的錯誤是因為create_with_data沒有持久化對象(未保存,保存時驗證失敗等)。

Rails函數返回最后計算的語句。 如果要編寫自己的create_with_data模型方法,則需要返回實際的對象。 object.save with返回truefalse ,但不返回對象本身。

為了返回對象(並以指定的方式訪問其ID),只需將對象本身表示為函數的最后一條語句,當您調用該方法時,它將自動返回。

class Post < ActiveRecord::Base

  def self.create_with_data(data)
    photo = self.new(data)
    photo.save
    photo # returns the photo object
  end

end

暫無
暫無

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

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