Rails6を使用してWebアプリケーションを開発しています。
前提として、Userモデルには、boolean型のisHostというカラム(初期値はnil)があります。
#hoge.controller def changeUserInfo @user = User.find_by(id: params[:id]) if @user.isHost != true || @user.isHost == nil @user.isHost == true else @user.isHost == false end @user.save end
現在上記のコードを書いており、
自分がやりたいこととしては、view.html.erbに設置したボタンを押してこのアクションを呼び出すことで、この@userのもつisHostというプロパティの真偽値を都度変更する処理を実装したいと考えています。
現在このコードを実行すると、
#hoge.controller #@user.isHostの初期値はnil def changeUserInfo @user = User.find_by(id: params[:id]) #ここは取得できている if @user.isHost != true || @user.isHost == nil #ここから思う通り動かない @user.isHost == true else @user.isHost == false end @user.save #出力結果: isHost:nil
こうなってしまいます。
Railsで、controller内でuserのデータを書き換える際は、<input name="hogehoge">, params[:hogehoge]のように、name属性でデータを取得しないとうまく動かないのでしょうか?
そもそも、コントローラの中でDBのデータを書き換えることはできるのでしょうか。
素人質問で大変恐縮ですが、ご教示のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。