在我的链接控制器的create方法中,我调用以下内容来创建一个新链接,然后调用url属性上的方法来删除一些东西:
@link = Link.new(params[:link])
@link.url = strip_http(@link.url)
有没有办法组合这两个语句,所以我可以在/我发送到数据库之前调用url param上的strip_http方法?感觉效率更高,我可以将数据库调用减少一个。
答案 0 :(得分:3)
实际上,当您未在对象上调用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])
在这种情况下别无他法。 :)