2013-05-02 4 views
0

Я пытаюсь засеять родительскую таблицу и дочернюю таблицу. Посещение родителя прекрасное, но я не знаю синтаксиса для посева ребенка. Пожалуйста помоги.Каков правильный синтаксис для посева дочерней таблицы?

Contact.delete_all 
    Customer.delete_all 
    b=[] 
    c=[] 
    b[0]=[1231215,'Jeremy', 'G', '9177477337', 
    '[email protected]', 'Central Ave', 'Rockaway', 'NY', ' 12291', '76 Son Court', 
    'ft lauderdale','Florida', '32423', '1', '0', '1', '1', '1', '1', '0', '0', '1',   '0', '9.95', 
    'Honda', '2012', 'Civic', '2.4 Turbo', 'Special', '1J474GFGDHDH8883334D0','fart monkey trap'] 

    b[1]=[46545465,'Se', 'Wof', '521428788', 
    '[email protected]', '13 NE 17 Street', 'broward', 'FL', ' 32222', '13 NE 17 Street', 
    'boca','Florida', '32222', '0', '0', '1', 
    '0', '0', '1', '1', 
    '1', '1', '1', '19.95', 
    'Ford', '2012', 'Taurus', '4.0', 'Faster', '3458GDHD3YU34D0','it smells'] 
    c[0]=[5112432709,'[email protected]'] 
    c[1]=[4326546423,'[email protected]'] 
    c[2]=[6614328902,'[email protected]'] 


    i=0 
    while i<2 do 
    @customer=Customer.create(
     :uid=>b[i][0], 
     :fname=>b[i][1], 
     :lname=>b[i][2], 
     :devphone=> b[i][3], 
     :email=>b[i][4], 
     :address=>b[i][5], 
     :city=>b[i][6], 
     :state=>b[i][7], 
     :zip=>b[i][8], 
     :baddress=>b[i][9], 
     :bcity=>b[i][10], 
     :bstate=>b[i][11], 
     :bzip=>b[i][12], 
     :roadass=>b[i][13], 
     :crisisass=>b[i][14], 
     :autocrash=>b[i][15], 
     :emergencyass=>b[i][16], 
     :remotediag=>b[i][17], 
     :carfind=>b[i][18], 
     :familytrack=>b[i][19], 
     :lowbatt=>b[i][20], 
     :towalerts=>b[i][21], 
     :monthlycost=>b[i][22], 
     :Make=>b[i][23], 
     :Year=>b[i][24], 
     :Model=>b[i][25], 
     :Engine=>b[i][26], 
     :VehicleSystem=>b[i][27], 
     :vinnum=>b[i][28], 
     :signupdate=>b[i][29], 
     :password=>b[i][30], 
     ) 
@customer.id=(1000000+i) 
print "\n#{@customer.id}\n" 

До этого момента код работает нормально. Когда я добавляю в следующие 5 строк, код не работает.

 Contact.create(
     :customer_id=>@customer 
     :contactmethod=>"sms", 
     :contacttype=>c[i][0], 
     :dateadded=>"5-1-2013", 
    ) 
     i+=1 
     end 

Это ошибка я получаю при запуске БД: Семя: рейка прервана! неопределенный метод `Контакт» для #

Это клиентская база

 class Customer < ActiveRecord::Base 
     attr_accessible :Engine, :Make, :Model, :VehicleSystem, :Year, :address, :autocrash, :baddress, :bcity, :bstate, :bzip, :carfind, :city, :crisisass, :devphone, :email, :emergencyass, :familytrack, :fname, :lname, :lowbatt, :monthlycost, :password, :remotediag, :roadass, :signupdate, :state,:stolenveh, :towalerts, :uid, :vinnum, :zip 
     validates :email, :address,:fname, :lname, :password, :state, :uid, :zip, :presence => true 
     has_many :Contacts 
    end 

Это Контакт Base

 class Contact < ActiveRecord::Base 
     attr_accessible :contactmethod, :contacttype, :customer_id, :dateadded 
     validates :contactmethod, :contacttype, :customer_id, :presence => true 
     belongs_to :Customer 
     end 

Ответ Ответ на этот вопрос в том, что вы не можете требуют наличие customer_id. Таким образом, вы просто должны изменить проверку путем удаления: customer_id:

class Contact < ActiveRecord::Base 
    attr_accessible :contactmethod, :contacttype, :customer_id, :dateadded 
    validates :contactmethod, :contacttype, :presence => true 
    belongs_to :Customer 
    end 
+0

customer_id должны получить '@ customer.id', а не только' @ customer' –

ответ

0

Ответ на этот вопрос заключается в том, что вы не можете требовать наличия customer_id. Таким образом, вы просто должны изменить проверку Удалив: Customer_ID:

class Contact < ActiveRecord::Base 
    attr_accessible :contactmethod, :contacttype, :customer_id, :dateadded 
    validates :contactmethod, :contacttype, :customer_id, :presence => true 
    belongs_to :Customer 
    end 
2

Во-первых, не назвать вам переменные со @ символом предварительно затрачиваемая, это для переменных экземпляра в контроллерах и зрения, seed.rb является ни того, ни другого.

Прежде всего, вы сделали файл очень трудным для понимания, попробуйте упростить его, например.

Contact.delete_all 
Customer.delete_all 
customer1 = Customer.create(
    # all of customer 1's details here 
) 
contact_for_customer_1 = Contact.create(
    customer_id: customer1.id, 
    # customer 1's contact details 
) 
customer2 = Customer.create(
    # all of customer 2's details here 
) 
contact_for_customer_2 = Contact.create(
    customer_id: customer2.id, 
    # customer 2's contact details 
) 

Это будет работать и легко понять. Вы уже ввели все данные о клиентах в файл справа, так что вы также можете легко его выложить. Не нужно хранить данные в массиве, а затем строить клиент оттуда, просто поместите его более подробно.

+0

по существу, что я получаю от того, что вы показываете мне это поставить в строке «customer_id: customer1.id», а затем вам не нравится, как выглядит мой код, поэтому вы хотите сделать его красивым. Однако ваше решение не работает. Я все равно получаю точно такую ​​же ошибку. – stevo999999

+0

Также в ваших моделях ваши вызовы, принадлежащие belongs_to, не должны иметь капиталов для имен моделей, то есть 'own_to: Customer' становится' принадлежит_to: customer'. Это настоящая проблема. Ваши ассоциации не будут работать так, потому что это может быть источником вашей проблемы. – Norto23

+0

И дело не в том, чтобы сделать это красиво, а в том, чтобы сделать его доступным для чтения. Я имею в виду, что ваш стиль ужасен, что приводит к таким проблемам, как 'undefined method Contact for #' – Norto23

Смежные вопросы