[英]calling a method on a param before I create a record in rails/ruby
在我的链接控制器的create方法中,我调用以下命令建立一个新链接,然后在url属性上调用一个方法以删除某些内容:
@link = Link.new(params[:link])
@link.url = strip_http(@link.url)
有没有一种方法可以结合这两个语句,这样我就可以在将其发送到数据库之前/之内在url参数上调用strip_http方法? 感觉效率更高,我可以将数据库调用减少一个。
实际上,当您不对对象调用save
或create
,不会进行任何数据库调用。 但是您可以执行以下操作:
params[:link][:url] = strip_http(params[:link][:url])
@link = Link.create(params[:link])
在模型上使用回调:
class Link < Activerecord::Base
before_save :strip_http
def strip_http
...
end
end
然后在您的控制器动作中:
@link = Link.create(params[:link])
在这种情况下,无需执行其他操作。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.