我刚开始学习使用Rails,并且在Django方面有相当丰富的经验。我正在尝试将一个相当常见的查询转换为Rails ORM,但似乎无法找到对数据库无关解决方案的良好引用。
我想要做的是将created_at字段的日期或月份与从网址提交的文本进行比较。在Django中这很简单:
if kwargs.get('year', False):
# Filter by year
post_list = Post.objects.filter(posting_date__year = kwargs['year'])
# Futher filter by month if applicable
if kwargs.get('month', False):
post_list = post_list.filter(posting_date__month=kwargs['month'])
我似乎无法找到一个简单的数据库独立解决方案来在Rails中做同样的事情。请注意,我强调数据库无关部分;我当然可以为此编写自己的SQL,但我在代码和数据库的抽象方面表现得很好。
答案 0 :(得分:0)
这可行吗
def self.by_year(year)
dt = DateTime.new(year)
boy = dt.beginning_of_year
eoy = dt.end_of_year
where("published_at >= ? and published_at <= ?", boy, eoy)
end
但我不确定这是最好的方式。