Skapa kundvagn - Ruby on Rails

{title}

Sessions


Innan vi kan bygga en kundvagn så att en användare kan välja produkter måste vi lära oss att använda sessionerna inom Ruby on Rails ; När en användare surfar i vår virtuella butik kommer de förmodligen att välja produkter, vad som normalt används för den här typen av applikationer är att vi laddar upp den till en virtuell kundvagn, där vi kommer att behålla produkten, priset, den totala kostnaden för köpet och mängden av produkter, detta tills det finns en eventuell utcheckning som är när användaren beslutar att slutföra köpet.
För att överensstämma med vad vi föreslår måste vi behålla de produkter som användaren väljer i vår applikation, för detta kommer vi att använda sessionerna, med denna implementering som gör räls kan vi behålla tillgängliga data utan att behöva lagra dem i databaser och de kommer att vara tillgängliga av användare som startade den från webbläsaren som upprättar anslutningen till applikationen, så att tangentkomplexkombinationerna kommer att lagras och vi har dem tillgängliga.
Låt oss se ett exempel på hur den här koden ser ut, vi kommer att skapa en ny metod i vår applikation i butikskontrollern:
 privat def find_cart session [: cart] || = Cart.new end 

Trots att de är ungefär fyra kodrader har dessa en ganska hög komplexitet, först gör vi den privata metoden, på detta sätt undviker vi att skenor gör det tillgängligt som en åtgärd i regulatorn, sedan ser vi att vi använder operatören för villkorad tilldelning || =.
Den här operatören i den metod som tillåter oss att utföra följande funktionalitet, om det finns en session-hash som motsvarar nyckeln: vagn så returnerar vi dess innehåll, annars bygger vi ett nytt vagnobjekt och tilldelar det till sessionn, det är där när vi returnerar dess värde .

Skapa de nödvändiga tabellerna


Nu när vi har behärskat den teoretiska delen av tillvägagångssättet kommer vi att gå lite mer i djupet i funktionaliteten som vi måste bygga, när vi väl har gjort vår kundvagn vet vi att varje försäljning som görs måste upprätthålla det pris som den gjordes av Vad vi ska skapa en tabell som heter line_items, detta kommer att göra är att lagra raden för valet av köparen, låt oss se koden som vi måste placera i vår databas:
 släpp tabell om det finns rad_item; skapa tabell line_items (id int product_id int mängd int enhet_pris decimal (10, 2) begränsning fk_items_product primär nyckel (id)); inte noll auto_inkrement, inte noll, inte noll standard 0, inte noll, utländsk nyckel (produkt_id) refererar till produkter (id), primär nyckel (id)); 

Som vi ser i denna definition av vår nya tabell har vi lagt till en referens för en utländsk nyckel som associerar fältet product_id med id-fältet i produkttabellen, det här förhållandet hjälper oss när vi genererar modellen.

Generera modellen


Eftersom vi har tabellen kan vi interagera med den, för detta måste vi generera en ny modell så att vi kan använda den inom vår applikation. Vi kommer att använda följande kommando från vår Ruby on Rails kommandokonsol.
 depot> rubin script / generera modell LineItem När vår modell har genererats lägger vi till följande till den: [i] app / models / line_item.rb [/ i], eftersom inte alla databaser stöder järnvägsrelationer, hanteringen av dem är uttryckligen. klass LineItem <ActiveRecord :: Base hör_till: produkt slut 

Efter att ha skapat vår modell och tabellerna för vår applikation har vi bara del 2 av den för att avsluta med utvecklingen av den och att ha en funktionell kundvagn och fungera som en språngbräda för att hoppa till mycket mer avancerade applikationer.
Vi fortsätter med byggandet av kundvagnen för vår applikation, i Ruby on Rails, för detta fortsätter vi att se modellen som vi har byggt och låt oss se lite förklaringen bakom ämnet. Rails hanterar en konvention som gör att du kan dra slutsatsen om hur man hanterar förhållanden mellan tabeller när vi uttryckligen har förklarat dem, genom att berätta att vår LineItem-modell har den här kodraden: gehör_to: produkt, eftersom rälsmotorn vet att det inom tabellen måste Det finns ett fält som heter produkt_id.

Skapa kundvagn


Nu kommer vi att generera den kod som krävs för att bygga vår kundvagn. Vi måste först implementera metoden i kontrollern i vår butik så att den lägger till element i vagnen. Först kommer vi att hitta denna controller: app / controllers / store_controller.rb och inuti skapar vi metoden add_to_cart med följande kod i den.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') slut 

Nu måste vi generera vår kundvagnsklass, den här klassen är inte kopplad till ActiveRecord- modellen eftersom den inte interagerar med databasen, för att göra det lättare kommer vi att generera det manuellt i vår app / modeller- katalog, där skapar vi filen cart.rb .
Inuti vår nya fil kommer vi att placera följande:
 klass Varukorg attr_reader: artiklar attr_reader: total_price def initiera @items = [] @total_price = 0.0 slutet på add_product (produkt) @items << LineItem.for_product (produkt) @total_price + = produkt.prisets slutänd 

Nu med detta avslutat, låt oss gå till vår LineItem-modell och placera vad vi behöver:
 klass LineItem <ActiveRecord :: Base tillhör_to: produkt def self.for_product (produkt) artikel = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end end 

Låt oss göra en kort sammanfattning av vad vi hittills har. Vi har redan den metod som tillåter oss att lägga till en artikel i vagnen, detta är add_to_cart, sedan har vi innehållet i vår kundvagnsklass som gör att vi kan lägga till en produkt och slutligen i vår LineItem- klass kan vi extrahera värdena på de produkter som vi lägger till. Vi behöver bara implementera några fler element så att vår applikation fungerar, vi måste först lägga till en åtgärd som gör att vi kan visa vyn och misslyckas med att generera den, för detta lägger vi till följande:
 def display_cart @cart = find_cart @items = @ cart.items slut 

Den här metoden går i vår controller, nu, i vår vy: app / views / store, skapar vi en display_cart.rhtml- fil och inuti placerar vi följande kod:

Visa kundvagn

Din varukorg innehåller saker.


Naturligtvis fungerar detta fortfarande inte men vi måste lägga till ett sista steg och detta är att definiera våra nya modeller inom ramen för applikationen för detta kommer vi att gå till app / controllers och vi ser en fil som heter applikation.rb där vi måste placera följande:
 klass ApplicationController <ActionController :: Basmodell: vagnsmodell: line_item slut 

Med detta skulle vi redan ha vår grundläggande kundvagn men det skulle föra oss närmare implementeringen av en slutprodukt med helt utökad funktionalitet. Detta avslutar denna Ruby on Rails- handledning och det är viktigt att nämna att vi måste analysera koden vi har lagt för att förstå orsaken till att den fungerar och därmed generera kvalitetskunskap.

  • 0