在我的链接控制器的 create 方法中,我调用以下内容来创建一个新链接,然后调用 url 属性上的一个方法来删除一些东西:
@link = Link.new(params[:link])
@link.url = strip_http(@link.url)
有没有办法将这两个语句结合起来,这样我就可以在将它发送到数据库之前/在将它发送到数据库时调用 url 参数上的 strip_http 方法?感觉更有效率,我可以将我的数据库调用减少一个。
在我的链接控制器的 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])
在这种情况下无事可做。:)