【发布时间】:2012-09-21 11:18:07
【问题描述】:
我有一个模型:
class HelloRails < ActiveRecord::Base
attr_accessible :filename, :filevalidate
include In4systemsModelCommon
validates :filename, presence: true
def update
parameters = [self.filename, @current_user]
parameters.map!{|p| ActiveRecord::Base.connection.quote p}
sql = "call stored_procedure(#{parameters.join(',')})"
ActiveRecord::Base.connection.execute(sql)
end
end
在视图中,我有一个称为:filename 的text_field。当我单击提交按钮时,它会在模型中调用此更新方法来调用存储的过程来执行。现在验证不起作用。
我不想接受 nil 作为文件名。我该怎么做?
【问题讨论】:
-
它没有验证,因为您正在直接执行 sql (
ActiveRecord::Base.connection.execute(sql))。验证仅在您使用 normal ActiveRecord 方法(如save和update_attributes)时运行。你的存储过程是什么样的?真的有必要吗?如果没有,请尝试使用 ActiveRecord,就像它应该被使用一样。 -
是的,谢谢。直接调用sql时是否可以验证字段?
-
看我的回答。没试过,但类似的东西应该可以。
标签: ruby-on-rails rails-models