写代码那点事(二)分享一些代码

2016-07-17  本文已影响52人  bruce_wu

最近这段时间一直在读大家写的代码,发现有时候不好的代码有些是因为不了解程序运行的本质,有些代码是因为没有用心
这次我就分享一些代码中的简单的错误

如上这段代码,company查询了多次,其实我们可以在each外面先一次查询出来,这样就不需要多次查询数据库了,形成如下代码
users = User.all(:conditions=>['status=:status',{:status=>1}])
companies = Company.all(:conditions=>['id in (?)',users.map(&:company_id)])
users.each do |user|
company = companies.find{|com|com.id==user.company_id}
.....其他操作
end
上面的代码和数据库的交互就比较友好了,不过仔细观察如上代码,其实User和Company是存在关联关系(relation)的,一般我们已经定义好了他们之间的关系,所以我们的代码其实应该是这样的
users = User.all(:conditions=>['status=:status',{:status=>1}],:include=>[:company])
users.each do |user|
company = user.company
.....其他操作
end

上一篇下一篇

猜你喜欢

热点阅读