vocabularies = File.read(Rails.root.join('lib', 'seeds', 'words.csv')) csv = CSV.parse(vocabularies, :headers => true, :encoding => 'ISO-8859-1') csv.each do |row| t = Vocabulary.new t.word_column1 = row[0] t.word_column2 = row[1] t.word_column3 = row[2] t.word_column4 = row[3] t.word_column5 = row[4] t.save! puts "#{t.word_column1}, #{t.word_column2} saved" end
On Sunday, January 15, 2017 at 3:21:54 AM UTC-5, parzival wade wrote: > > Hi Daynthan, > > I have the same problem. So I see you got working solution. > Please, can you post final version of working important files? > Thank you. > > On Friday, January 6, 2017 at 2:45:29 PM UTC+1, daynthan kabilan wrote: >> >> Thank you Tamosus pontik. >> >> I have done the task using this keyword require "#{dynamic_model_name}" >> >> On Thu, Jan 5, 2017 at 7:24 PM, tamouse pontiki <tamous...@gmail.com> >> wrote: >> >>> On Thu, Jan 5, 2017 at 2:40 AM Daynthan Kabilan <dayan...@gmail.com> >>> wrote: >>> >>>> Hi Tamosus pontik, >>>> >>>> Thanks for your reply. >>>> The model file is created dynamically based on this code. >>>> >>> >>> And after you write that file, you need to require it for Rails to use >>> it. That's why the constant is undefined. >>> >>> Do you know how the require statement works in Ruby? >>> >>> >>>> model_file = File.join("app", "models", fname.singularize+".rb") >>>> model_name = fname.singularize.capitalize >>>> File.open(model_file, "w+") do |f| >>>> f << "class #{model_name} < ActiveRecord::Base\nend" >>>> end >>>> >>>> But i need to store the values to specific tables. >>>> Note: I am not running migration for the dynamic tables(model) >>>> >>>> On Wed, Jan 4, 2017 at 10:07 PM, tamouse pontiki <tamous...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Jan 4, 2017 at 8:57 AM Daynthan Kabilan <dayan...@gmail.com> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I have a CSV upload option and need to create a table and model based >>>>>> on the CSV colums. >>>>>> >>>>>> We allow to upload different kind of CSV file formats and each file >>>>>> upload will create new table and info will be stored accordingly. I have >>>>>> created a table with columns based on CSV file header and also created a >>>>>> model base on CSV file name. But when i store the file details to >>>>>> specific >>>>>> table i faced error. >>>>>> >>>>>> >>>>>> def self.import(file, head, csvalue,fname) >>>>>> >>>>>> ............... >>>>>> .............. >>>>>> >>>>>> ActiveRecord::Schema.define do >>>>>> create_table "#{fname}" do |t| >>>>>> #(define your columns just as you would in a migration file) >>>>>> head.each do |h| >>>>>> t.text h >>>>>> end >>>>>> # t.string :my_string >>>>>> end >>>>>> end >>>>>> >>>>>> model_file = File.join("app", "models", fname.singularize+".rb") >>>>>> model_name = fname.singularize.capitalize >>>>>> File.open(model_file, "w+") do |f| >>>>>> f << "class #{model_name} < ActiveRecord::Base\nend" >>>>>> end >>>>>> >>>>>> # ss=model_name.new >>>>>> * p ss=model_name.constantize.new* >>>>>> >>>>>> .............. >>>>>> ............... >>>>>> >>>>>> file="#{fname}_#{cnt}" >>>>>> return file >>>>>> end >>>>>> >>>>>> >>>>>> How can declare the object for dynamic model. Because I couldn't >>>>>> store the values to new table. >>>>>> >>>>>> I faced the *Error* like *NameError (uninitialized constant Mytest):* >>>>>> >>>>>> Any idea how to solve this ? >>>>>> >>>>> >>>>> I do not know if this will work, but you probably need to manually >>>>> require the model file you create before you try to constantize the model >>>>> name. I don't think Rails autoloading is working in this situation. >>>>> >>>>> >>>>> >>>>> >>>> -- >>>>> >>>> You received this message because you are subscribed to the Google >>>>> Groups "Ruby on Rails: Talk" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to rubyonrails-ta...@googlegroups.com. >>>>> To post to this group, send email to rubyonra...@googlegroups.com. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/rubyonrails-talk/CAHUC_t9d3gqinFY2hSMDMm8-Z49cQy7cRp4J8Nwgf3mAm4gccg%40mail.gmail.com >>>>> >>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/CAHUC_t9d3gqinFY2hSMDMm8-Z49cQy7cRp4J8Nwgf3mAm4gccg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>> >>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Ruby on Rails: Talk" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to rubyonrails-ta...@googlegroups.com. >>>> To post to this group, send email to rubyonra...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/rubyonrails-talk/CADKeJyQKcRGM%3Dj3miANP9PqfODZ6fA8x98F8vUfG_QQ1KnEntw%40mail.gmail.com >>>> >>>> <https://groups.google.com/d/msgid/rubyonrails-talk/CADKeJyQKcRGM%3Dj3miANP9PqfODZ6fA8x98F8vUfG_QQ1KnEntw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Talk" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to rubyonrails-ta...@googlegroups.com. >>> To post to this group, send email to rubyonra...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/rubyonrails-talk/CAHUC_t8QDyZZhv0Z4TANe1Zc7jcR%2BqYsW4iitPxLQz%3DGqXMpKw%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/rubyonrails-talk/CAHUC_t8QDyZZhv0Z4TANe1Zc7jcR%2BqYsW4iitPxLQz%3DGqXMpKw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/0d9ee2e7-c5d9-496e-8349-a656328fafd2%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.