controller action包含多个模型方法调用?

时间:2013-08-14 10:45:48

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

我在update控制器中有一个简单的Rails 4操作:

#more stuff here
def update
  if @user.update(user_params)
    flash[:notice] = "User #{@user.username} updated"
    redirect_to users_path
  else
    render 'edit'
  end
end
private
def set_user
  @user = User.find(params[:id])
end

但是,RubyMine警告@user.update@user.username

  

如果控制器操作在初始.find或.new之后包含多个模型方法调用,则此检查会发出警告。建议您在模型类中实现所有业务逻辑,并使用单个方法来访问它。

我在这里看不到more than one model method call。有人可以解释发生了什么吗?

编辑 - 我在create操作中有类似的内容没有警告,所以我认为这与user_params有关...

def create
  if @user.save
    flash[:notice] = "User #{@user.username} created"
    redirect_to users_path
  else
    render 'new'
  end
end

1 个答案:

答案 0 :(得分:3)

假设username是模型中合并用户first_namelast_name的方法。

我猜@user.update(user_params)@user.username是你的两个方法调用。一个保存模型,另一个在flash通知中设置用户全名。

这只是来自rubymine的警告,只是建议你采取一些行动,而不是必须遵循它们。