开发者

Queue management in Rails

开发者 https://www.devze.com 2023-01-04 02:20 出处:网络
I am planning to have something like this for a website that is on Ruby on Rails. User comes and enters a bunch of names开发者_JAVA百科 in a text field, and a queue gets created from all the names. Fr

I am planning to have something like this for a website that is on Ruby on Rails. User comes and enters a bunch of names开发者_JAVA百科 in a text field, and a queue gets created from all the names. From there the website keeps asking more details for each one from the queue until the queue finishes.

Is there any queue management gem available in Ruby or I have to just create an array and keep incrementing the index in session variable to emulate a queue behaviour?


The easiest thing is probably to use the push and shift methods of ruby arrays.

Push sticks things on the end of the array, shift will return and remove the first element.

As you receive data about each of the names, you could construct a second list of the names - a done array. Or if you're not concerned about that and just want to save and more on with them, just store the array in the session (assuming it's not going to be massive) and move on.

If your array is massive, consider storing the names to be added in temporary rows in a table then removing them when necessary. If this is the route you take, be sure to have a regularly running cleanup routine that removes entries that were never filled out.

References

  • http://apidock.com/ruby/Array/push

  • http://apidock.com/ruby/Array/shift


Try modeling a Queue with ActiveRecord

Queue.has_many :tasks

attributes: name, id, timestamps

Task.belongs_to :queue

attributes: name, id, position, timestamps, completed

Use timestamps to set initial position. Once a task is completed, set position to [highest position]+1 (assuming the lower the position number, the higher up on the queue). Completed tasks will sink to the bottom of the queue and a new task will rise to the top.

Hope this helps!

0

精彩评论

暂无评论...
验证码 换一张
取 消