RAILS:弹出/警告/消息before_create

时间:2016-11-03 09:18:00

标签: ruby-on-rails

我想在创建记录时根据特定字段显示弹出/消息update some other table also

有没有办法使用验证或操作链接?

我想做类似下面的事情:

validates :fieldc, if: :should_update?, message: "Update fielda and fieldb in tablex also"

bef should_update?
  fieldc == "req_value"
end 

我确信上述验证不起作用。但我想显示弹出窗口fieldc == req_value并创建记录。有办法吗?

感谢。

修改: 我能用以下方式做到吗?

  after_create :update_tablex
  def update_tablex
      if self.should_update?
        flash[:notice] = 'Please update fielda and fieldb in tablex also'
      else
        flash[:notice] = 'Record updated successfully.'
      end
  end


def should_update?
  fieldc == "req_value"
end

但我仍然得到NameError (undefined local variable or method 'flash' for #)

1 个答案:

答案 0 :(得分:1)

这实际上是一个控制器问题,应该在控制器中解决,而不是模型。该模型永远不负责控制所查看内容的逻辑以及工作流程的进展。最好的办法是设置一条flash消息,显示他们需要做什么,并且方便的是将它们重定向到tablex编辑视图。

在您的创建方法中......

def create
  ... 
  if @record.save
    if @record.should_update?
      flash[:notice] = 'Please update fielda and fieldb in tablex also'
      redirect_to edit_tablex_path(@record.tablex)
    else
      flash[:notice] = 'Record updated successfully.'
      redirect_to @record
    end
  else
    render :new
  end
end