0

在我的链接控制器的 create 方法中,我调用以下内容来创建一个新链接,然后调用 url 属性上的一个方法来删除一些东西:

@link = Link.new(params[:link])
@link.url = strip_http(@link.url)

有没有办法将这两个语句结合起来,这样我就可以在将它发送到数据库之前/在将它发送到数据库时调用 url 参数上的 strip_http 方法?感觉更有效率,我可以将我的数据库调用减少一个。

4

1 回答 1

3

实际上,当您不调用对象savecreate对象时,不会有任何数据库调用。但你可以这样做:

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])

在这种情况下无事可做。:)

于 2013-05-12T18:32:28.963 回答