Giter Site home page Giter Site logo

Comments (8)

autotelik avatar autotelik commented on July 17, 2024

Hi ... there is a helper : thor datashift:generate:csv -m, --model=MODEL -r, --result=RESULT

That will generate a template file with the headers of the model. So you can generate this for Spree::Product

Also, there is equivalent cli to generate Excel instead of CSV.

Then you can take you data from another system, and place it in the right columns for Spree

This may help (unfortunately I have not worked with Spree for a while so may need tweaking for latest versions)

https://github.com/autotelik/datashift/wiki/Walkthroughs

from datashift_spree.

autotelik avatar autotelik commented on July 17, 2024

from datashift_spree.

autotelik avatar autotelik commented on July 17, 2024

Just to confirm - to create a basic Product, you only need to set the Price field
i.e Add a price column and run with datashift:import:excel with --force price

As I mentioned the force is required because price is a method delegated from the master Variant so it does not show up in normal Rails/Ruby reflection methods

You can then setup complex variants and pricing through GUI or a custom script

Prices are now stored in a separate table, called spree_prices. This table tracks the variant, the price amount, and the currency. This allows for variants to have different prices in different currencies.

from datashift_spree.

autotelik avatar autotelik commented on July 17, 2024

FYI - was playing around in console and this is a way to create the complex Prices

product.master.prices.create(currency: "GBP", amount: "2.0", variant: product.master)

from datashift_spree.

mices avatar mices commented on July 17, 2024

By what magic will currency, amount and variant insert into spree_prices ? datashift is know to do this from the model name Spree::Product (besides --force price) ?

from datashift_spree.

mices avatar mices commented on July 17, 2024

t datashift:import:excel -i /tmp/product.xls -m Spree::Product --force price

t is short for thor?

from datashift_spree.

autotelik avatar autotelik commented on July 17, 2024

t is just my alias for bundle exec thor

datashift uses active record reflection to find all the available columns and associations on a model.

the issue with Spree is it is very complex data model and Product has many delegated methods, down to Variant. these do not show up in the reflections so datashift thinks it cannot use an incoming file column called 'price'

the force flag tells datashift that even though it will find no matching Price attribute on Product itself, it is still possible to call product.price i.e product has a price method that does not show up in the reflection.

if anyone know a way to get round this and can guide me to a way to discover delegated methods on a Rails model that would be awesome but for now the force flag is a way to inform datashift to attempt to call these methods

from datashift_spree.

mices avatar mices commented on July 17, 2024

Do you recommend using that method, with datashift using the active record associations or generate separate templates for every model/table for simplicity and certainty's sake ?

from datashift_spree.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.