0
我正在製作一個小型(< 150人)活動的門票,並希望自動增加門票號碼並將這些號碼保存到數據庫中。我是否使用「hidden_field」?我的數據庫以ticket.number作爲數組設置,因爲一個人可能會購買多張票。那麼正確的語法是什麼?謝謝!如何在保存到Rails之前設置和增加票號?
我正在製作一個小型(< 150人)活動的門票,並希望自動增加門票號碼並將這些號碼保存到數據庫中。我是否使用「hidden_field」?我的數據庫以ticket.number作爲數組設置,因爲一個人可能會購買多張票。那麼正確的語法是什麼?謝謝!如何在保存到Rails之前設置和增加票號?
是您的數據庫PostgreSQL?支持存儲陣列本身,所以你可以做
"select max(select max(x) from unnest(ticket_array) x) from people"
我沒有測試過,所以我不看好措辭,但它類似的東西。
但是,您的數據庫足夠小,您可以在Rails中執行此操作,該操作適用於任何類型的數據庫,前提是將陣列作爲序列化字符串存儲。
last_number = Person.all.map{|person| person.ticket_array.max }.max
你會在before save
利用這一點,我假設你有一個整數列number_of_tickets
,所以你可以做...
class Person
serialize :ticket_array
before_save :determine_ticket_numbers
def determine_ticket_numbers
return if persisted?
last_number = self.class.all.map{|person| person.ticket_array.max }.max
last_number ||= 0
number_of_tickets.times { self.ticket_array << (last_number += 1) }
end
end
需要更多信息。你能提供你正在使用的相關的模型代碼和數據庫關係嗎? – Pyrce
爲什麼你沒有'Ticket'模型並使用它的'id'作爲票號?爲什麼'ticket.number'是一個數組? –