私はモデル ticket.rb を持っています。このモデルには :number 列があります。チケット番号の最初の 7 桁でデータベース内のチケットを検索するメソッドを作成することにしました。目標を達成するために、データベースで Active Record クエリを作成する方法がわかりません。私はもう試した
ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}")
しかし、これは意味がありません。答えを2日間検索しました。
私はモデル ticket.rb を持っています。このモデルには :number 列があります。チケット番号の最初の 7 桁でデータベース内のチケットを検索するメソッドを作成することにしました。目標を達成するために、データベースで Active Record クエリを作成する方法がわかりません。私はもう試した
ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}")
しかし、これは意味がありません。答えを2日間検索しました。
ミサ、
これはそれを行う必要があります:
# 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}%'")
データベースにそのようなチケットが1つしかないと思われる場合は、find_by
代わりに次のようにしwhere
ます:
ticket = Ticket.find_by("number like '#{n}%'")
number
フィールドが文字列ではなく数値の場合は、次のように型キャストする必要があります。
ticket = Ticket.find_by("CAST(number AS varchar) like '#{n}%'")
さらにサポートが必要な場合はお知らせください。