1

データベースのデータを更新しようとしていますが、次のエラーが発生します。

undefined method `is_current' for #<ActiveRecord::Relation:0x38622a8>

私のコントローラー:

@user = User.where("user_id = #{user_id} and is_current = 1") 

if @user.nil?
  puts"xxxxxxxxxxxxxxxxxxxxxxxxxxx"
else 
  @user.is_current = 0
  @user.to = Time.now
  @user.save
end
4

2 に答える 2

5

User.where は配列を返します。後で .first と言う必要があります。さらに、引数をエスケープせずに where で文字列を使用しないでください。クエリは安全ではなく、SQL インジェクションに対してオープンです。

@user = User.where(user_id: user_id, is_current: 1).first
于 2012-10-25T07:17:43.373 に答える
1

モデルでクエリを書いてみてください。それは良い習慣なので、できる

@user = User.where("user_id = #{user_id} and is_current = 1") 

と置換する

@user = User.user_is_current(user_id,1) # two argument 1) user_id and 2) is_current value

あなたのモデルで

def user_is_current(user_id,is_current)
  where(user_id: user_id, is_current: is_current)
end

それはあなたが書くことができるように配列でデータを与えるでしょう

 @user = User.user_is_current(user_id,1).first
于 2012-10-25T07:23:15.493 に答える