我有一個模型user_item
,其屬性名爲:primary_image_id
。 A user_item
has_many
user_item_images
。 primary_image_id
的目的是將其設置爲等於user_item_images
之一的id,這樣我就可以使用邏輯,以便用戶在視圖中不能刪除對象。Rails - 在創建時一起創建基於子id的父屬性
A user_item
應該永遠不存在沒有這個屬性集,或者至少存在幾秒鐘,直到設置屬性。在我的表格中,user_item
與user_item_images
一起創建。
看起來像user_item_image.id
只是在創建後才設置。我試圖在user_item
def set_primary_image_id
self.primary_image_id = self.user_item_images.first.id
end
做一個after_create
回調,但似乎並沒有工作,我猜是因爲孩子wan't創建,所以沒有一個ID。
我想我可以做一個after_create
回調的user_item_image
模型,是這樣的:
def set_user_item_primary_image_id
user_item = self.user_item
user_item.primary_image_id = user_item.user_item_images.first.id
end
但是這似乎有點小題大做,因爲它真的不應該做的每創建一個user_item_image
時間。
我有一個嵌套表單,它在提交時創建屬於user_item的'user_item'和'user_item_images'。如果我在'user_item'模型上放置'after_create',這會發生在整個事務之後,還是會在'user_items'子項存在之前發生? – user4584963
使用'build',一旦所有東西都有你需要的ID,'after_create'就會運行。 –