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 。此外,不要在不转义参数的情况下在其中使用字符串。您的查询不安全并且对 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 回答