我有模型ticket.rb。这个模型有 :number 列。我决定制定一种方法,应该通过票号的前 7 位在数据库中搜索票。我不知道如何对数据库进行 Active Record 查询以实现我的目标。我试过了
ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}")
但这没有任何意义,搜索了两天的答案。
我有模型ticket.rb。这个模型有 :number 列。我决定制定一种方法,应该通过票号的前 7 位在数据库中搜索票。我不知道如何对数据库进行 Active Record 查询以实现我的目标。我试过了
ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}")
但这没有任何意义,搜索了两天的答案。
米莎,
这应该这样做:
# Makes numbers like '123' become '0000123'
# or takes first 7 digits if number is longer than 7 digits:
n = sprintf("%07d", n).first(7)
# Searches for anything starting with those 7 digits.
tickets = Ticket.where("number like '#{n}%'")
find_by
如果您认为数据库中只有一张这样的票,只需执行以下操作where
:
ticket = Ticket.find_by("number like '#{n}%'")
如果您的number
字段不是字符串,而是数字,则需要通过以下方式进行类型转换:
ticket = Ticket.find_by("CAST(number AS varchar) like '#{n}%'")
如果您需要更多帮助,请告诉我。