![](/img/trans.png)
[英]Ruby on Rails add specific attribute to newly created object in view
[英]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返回true
或false
,但不返回對象本身。
為了返回對象(並以指定的方式訪問其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.