在rails上从控制器向DB添加信息

时间:2016-01-07 21:58:51

标签: ruby-on-rails ruby ruby-on-rails-4

我尝试在用户成功提交表单后将用户ID添加到db中的2列。这些命令在控制台中运行正常,但不能在控制器中运行。我没有直接从控制器向数据库添加信息,所以我认为我做错了。

这是创建方法

 def create
   @game = Game.friendly.find(params[:game_id])
   @game_category = Game.friendly.find(@game.id).game_categories.new(game_category_params)

    if current_user.mod_of_game? params[:game_id] && @game_category.save

    Game.find(@game.id).game_categories.find(game_category.id).update(submitted_by: current_user.id)
    Game.find(@game.id).game_categories.find(game_category.id).update(approved_by: current_user.id)

      flash[:info] = "Game category added succesfully!"
      redirect_to @game
    else
      render 'new'
    end

end

这两行应该将用户ID添加到submitted_by和approved_by列,但他们不会。我没有收到任何错误消息,他们只是不向这些列添加任何内容

Game.find(@game.id).game_categories.find(game_category.id).update(submitted_by: current_user.id)
Game.find(@game.id).game_categories.find(game_category.id).update(approved_by: current_user.id)

如果我用在控制台中工作的编码替换线条以查看它是变量还是不正确的东西它仍然无法正常工作

Game.find(12).game_categories.find(55).update(submitted_by: 1)
Game.find(12).game_categories.find(55).update(approved_by: 1)

我正在构建一个应用程序来学习rails,我想这是我不知道的事情。

任何人都可以告诉我我做错了什么吗?

更新

好的,它现在给我一个错误 - 找不到没有ID的GameCategory

所以@ game_category.id没有工作?

2 个答案:

答案 0 :(得分:1)

您错过了@的查询中的小错字。

Game.find(@game.id).game_categories.find(@game_category.id).update(submitted_by: current_user.id)

答案 1 :(得分:0)

在这里和那里玩耍之后,结果就是这条线

if current_user.mod_of_game? params[:game_id] && @game_category.save

当更改为此时,它可以正常工作

if @game_category.save && current_user.mod_of_game? @game