我有三张桌子:User
,fruits
,user_fruits
世界上有一定数量的用户和水果。我不能创建重复的水果。说水果已经存在于数据库中,我想使用它们,所以我没有创造新的成果。
假设我们在控制器中,我想要做的就是创建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
如果失败,我也希望我的destroy和create引发错误。
答案 0 :(得分:0)
如果您只想创建新实例,则只需使用new
或build
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
替换为fruit