Geoffrey Lessel
2006-Jul-20 02:53 UTC
[Rails] Carrying model date from one page to the next
I am working on a crude first-go-round-in-rails shopping cart and can''t figure out for the life of me the best way to do this. I have a shopping cart that has one page during the checkout that handles the address information, then the next handles the actual credit card information. How do I take the information from the address form and keep it alive long enough to put it in to the cart and then database once the order is accepted? One scenario I thought of is to store the customer address information in the database and just link the order to the customer in the database. The only problem with that is if I save the address info into the db before the order is completed, I have the possibility of a ton of unused addresses in the database. Is there a way to hold off on a database save for a page? If that happens, can I keep the validation from the model working on the first page (ie without a save)? Thanks for any help. -geoffrey
Will the order be accepted instantly? (after the credit card is processed) Or do you not want an order to be processed until the store owner accepts the order? If it''s the first then you can simply store the address information in a session since the credit card processing should not take so long that the session will get erased. If it''s the second, I would store the information in the database anyways and just purge it every week or so. (You write a ruby script that deletes all the addresses that will never be processed to clean the database so that way you don''t have so many unused addresses.) A third way to do it would just be to force every customer to have an account with you and store the address along with their account. That would be my way of doing it because you can do a lot more powerful things with the website if you have accounts for users. If I''m misunderstanding you, let me know and explain your scenario a bit better and I''ll to my best to help you out. Hope this helps, Rick Martinez On 7/19/06, Geoffrey Lessel <geoffrey@hydromint.com> wrote:> I am working on a crude first-go-round-in-rails shopping cart and > can''t figure out for the life of me the best way to do this. I have a > shopping cart that has one page during the checkout that handles the > address information, then the next handles the actual credit card > information. How do I take the information from the address form and > keep it alive long enough to put it in to the cart and then database > once the order is accepted? > > One scenario I thought of is to store the customer address > information in the database and just link the order to the customer > in the database. The only problem with that is if I save the address > info into the db before the order is completed, I have the > possibility of a ton of unused addresses in the database. > > Is there a way to hold off on a database save for a page? If that > happens, can I keep the validation from the model working on the > first page (ie without a save)? > > Thanks for any help. > -geoffrey > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-- Rick Martinez Director of Technology Complexity Gaming
Geoffrey Lessel
2006-Jul-20 03:50 UTC
[Rails] Carrying model date from one page to the next
The order will be accepted once the credit card is accepted/processed. Your first scenario sounds right to me as well, I guess I just don''t know how to do sessions well (or at all). =) I have a cart session working because of the Depot app in Agile Web Development With Ruby On Rails. Could you help steer me in the right direction? For example, would I create a model for an Address, then load that object into the already-created cart session? How would validation work for form data just coming from a session? I''m assuming I would have to write my own, correct? When I try to use validates_presence_of, it gives me the error that the class isn''t a subclass of ActiveRecord, which is correct because it isn''t getting written into the database, right? I agree about the user login scenario, but that''s not what the client is asking for. If it were mine, I''d do it in a heartbeat. Thanks for your help! -geoffrey On Jul 19, 2006, at 10:04 PM, Rick Martinez wrote:> Will the order be accepted instantly? (after the credit card is > processed) > Or do you not want an order to be processed until the store owner > accepts the order? > > If it''s the first then you can simply store the address information in > a session since the credit card processing should not take so long > that the session will get erased. > > If it''s the second, I would store the information in the database > anyways and just purge it every week or so. (You write a ruby script > that deletes all the addresses that will never be processed to clean > the database so that way you don''t have so many unused addresses.) > > A third way to do it would just be to force every customer to have an > account with you and store the address along with their account. That > would be my way of doing it because you can do a lot more powerful > things with the website if you have accounts for users. > > If I''m misunderstanding you, let me know and explain your scenario a > bit better and I''ll to my best to help you out. > > Hope this helps, > Rick Martinez > > On 7/19/06, Geoffrey Lessel <geoffrey@hydromint.com> wrote: >> I am working on a crude first-go-round-in-rails shopping cart and >> can''t figure out for the life of me the best way to do this. I have a >> shopping cart that has one page during the checkout that handles the >> address information, then the next handles the actual credit card >> information. How do I take the information from the address form and >> keep it alive long enough to put it in to the cart and then database >> once the order is accepted? >> >> One scenario I thought of is to store the customer address >> information in the database and just link the order to the customer >> in the database. The only problem with that is if I save the address >> info into the db before the order is completed, I have the >> possibility of a ton of unused addresses in the database. >> >> Is there a way to hold off on a database save for a page? If that >> happens, can I keep the validation from the model working on the >> first page (ie without a save)? >> >> Thanks for any help. >> -geoffrey >> _______________________________________________ >> Rails mailing list >> Rails@lists.rubyonrails.org >> http://lists.rubyonrails.org/mailman/listinfo/rails >> > > > -- > Rick Martinez > Director of Technology > Complexity Gaming > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails
Apparently Analagous Threads
- Recipes versus Ruby for Rails: what''s best after Agile?
- Using Predicates to look at an array..
- How do I? Same Model, Different Controllers, Different Validations?
- ArgumentError in StoreController#add_to_cart: wrong number of arguments (1 for 0)
- Q on AJAX with respect to DRY