Ale*_*xis 10 activerecord scope ruby-on-rails dry ruby-on-rails-3
例如,请考虑以下代码(在模型中):
scope :popular, where("views >= 250 OR (views >= 10 AND avg_rating >= 4.75)")
def popular?
views >= 250 or views >= 10 && avg_rating >= 4.75
end
Run Code Online (Sandbox Code Playgroud)
第一个条件是SQL,第二个条件是ruby,但仍然存在明显的重复.干嘛有什么好方法吗?这种情况的最佳做法是什么?
有充分的理由同时拥有两者,所以我可能会考虑这一点(全部在模型中):
VIEWS_QUALIFIER = 250
RATING_VIEWS_QUALIFIER = 10
RATING_QUALIFIER = 4.75
scope :popular, where("views >= ? OR (views >= ? AND avg_rating >= ? ",
VIEWS_QUALIFIER, RATING_VIEWS_QUALIFIER, RATING_QUALIFIER)
def popular?
views >= VIEWS_QUALIFIER or
(views >= RATING_VIEWS_QUALIFIER && avg_rating >= RATING_QUALIFIER)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |