2017-06-07 102 views
0

我有三個表:用戶和水果在世界Userfruitsuser_fruits如何在不創建新記錄的新實例的情況下創建新的連接表記錄。 Rails的

有定數。我無法創建重複的水果。說果實已經存在於數據庫中,我想使用它們,所以我不會創造新的成果。

假設我們在一個控制器中,我想要做的就是創建一個user_fruits的新實例。我也想刪除destroy操作中的連接表實例,但不是實際的水果本身。這是做到這一點的方式嗎?

def create 
    user.user_fruits.create!(fruit: fruit) 
end 

def destroy 
    user.user_fruits.find_by(fruit: fruit).destroy! 
end 


private 

attr_reader :fruit 

def load_fruit 
@fruit = Fruit.find_by(color: red, sweetness: 100) 
end 

我也希望我的摧毀和創建錯誤,如果它失敗。

回答

0

如果你只是想創建一個新的實例,那麼你可以簡單地使用newbuild

def create 
    @new_fruit = user.fruits.new # or fruits.build 
end 

更新

user_fruits新的實例? 那麼你應該嘗試像..

user.user_fruits.new 

def create 
    user.user_fruits.create!(fruit_id: @fruit.id) 
end 

def destroy 
user.user_fruits.find_by_fruit_id(@fruit.id).destroy! 
end 

如果你一定要使用閱讀器,然後用fruit

+0

更換@fruit我做了一個編輯我的帖子。說果實已經存在於數據庫中。我需要創建的是連接的表格行。 – Jwan622

+0

「水果」是指「@水果」? –

+0

檢查更新的答案,你不需要'attr_reader' –

相關問題