我想在创建记录时根据特定字段显示弹出/消息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 #)
答案 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