在rails中,如果是@ user.save"实际上保存对象,还是只是一个检查?

时间:2017-04-05 09:23:32

标签: ruby-on-rails

新手问题!在许多控制器方法中,我看到类似

的东西
@user.doSomething
if @user.save
  #flash or redirect something
else 
  #flash or redirect something

在这种情况下,是检查对象是否已保存,还是保存对象,然后检查它是否有效

2 个答案:

答案 0 :(得分:1)

if @user.save

这将保存对象,如果它有效并返回

    如果成功保存true,则
  • @user
  • false如果@user未保存

参见下面的示例

@user = User.new

@user.save
#=> false

@user = User.new(email: 'foo@bar.com', password: 'foobar123')

@user.save
#=> true

答案 1 :(得分:1)

您还可以执行以下操作:

def edit
  @user = User.find(params[:id])
  @user.assign_attributes(params[:user])

  if @user.valid?
    @user.save!
    redirect
  else
    render
  end
end

如果用户有效,这将保存用户,但如果由于某些其他原因无法保存,则会引发异常。