用于#<ActiveRecord :: Relation:0x38622a8>的未定义方法`is_current'在ruby on rails更新数据

Sac*_*sad 1 ruby-on-rails exception ruby-on-rails-3

我正在尝试更新数据库中的一些数据,但我收到此错误:

undefined method `is_current' for #<ActiveRecord::Relation:0x38622a8>
Run Code Online (Sandbox Code Playgroud)

我的控制器:

@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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 5

User.where返回一个数组.你需要先说出来.另外,不要在不转义参数的地方使用字符串.您的查询不安全,并且对SQL注入开放.

@user = User.where(user_id: user_id, is_current: 1).first
Run Code Online (Sandbox Code Playgroud)

  • 为了完整起见,如果由于某种原因必须使用字符串,则可以使用预准备语句:`User.where('user_id =?and is_current = 1',user_id)` (2认同)