在Rails查找方法中进行类型转换

时间:2012-12-14 10:23:02

标签: ruby-on-rails ruby

我有一个名为bill_date的列,其数据类型为没有时区的时间戳。

现在我想用bill_date搜索记录。用户将输入日期,如2012-12-09。

我想使用Bill.find_by_bill_date(2012-12-09)。

以上不会给出结果。因为我们必须做类型转换。请给我一些建议。我不想使用where子句或条件。我想只使用find_by。

2 个答案:

答案 0 :(得分:1)

您可以像这样在Bill类中添加一个方法:

def self.find_by_bill_date(date)
  where("DATE(bill_date) = DATE(?)", date).first
end

我知道你说你不想使用where子句,但动态查找器方法(find_by_ *)完全相同,无论如何。

答案 1 :(得分:0)

将Date.today放入时间戳字段并不是一个好习惯。如果你想现在使用它,最好把Time.now而不是Date.today,或者将列更改为日期。

编辑:关于类型演员:

>> h.published_at_before_type_cast
=> "2012-11-15 19:11:15.517923"