Rails - 这是不好的做法还是可以优化?
这会被视为不好的做法吗?
unless Link.exists?(:href => 'example.com/somepage')
Domain.where(:domain => 'example.com').first.links.create(:href => 'example.com/somepage', :text => 'Some Page')
end
我意识到我可能会请求比实际需要更多的数据,我可以以某种方式优化它吗?
域是一个唯一索引,因此查找应该相当快。
运行轨道3.0.7
Would this be considered bad practice?
unless Link.exists?(:href => 'example.com/somepage')
Domain.where(:domain => 'example.com').first.links.create(:href => 'example.com/somepage', :text => 'Some Page')
end
I realize I might be requesting more data then I actually need, can I optimize this somehow?
Domain is a unique index so the lookup should be fairly quick.
Running Rails 3.0.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过以下方式重构您的代码:
Domain class
Link class
使用
结论
在这两种情况(您的和我的)中,您都会收到两个请求(如下所示):
但是使用此代码,您还可以免受未知域的影响,因此
Link
会自动创建一个。您还可以使用验证唯一性,以便删除所有
除非 Link.exists?(:href => '...')
。You can refactor your code in this manner:
Domain class
Link class
Usage
Conclusion
In both cases (your and mine) you get two request (like so):
But with this code you're also protected from unknown domains, so
Link
'd create one automatically.Also you can use validates uniqueness so you can remove all
unless Link.exists?(:href => '...')
.UPD
或者您可以使用扩展的
update_or_create_by_*
方法:更多信息如下:
UPD
Or you can use extended
update_or_create_by_*
method:More info here: