2013-05-02 24 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 

这是端子

 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' – 2013-05-02 02:26:08

回答

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 2013-05-02 02:14:04

+0

同样在你的模型中,你的belongs_to调用不应该有模型名称的大写,即'belongs_to:Customer'变成'belongs_to:customer'。这是一个真正的问题。你的关联不会像这样工作,因此它可能是你问题的根源 – Norto23 2013-05-02 03:42:41

+0

也不是关于如何让它变得漂亮,而是让它变得可读。我的意思是你的风格很糟糕,导致像'未定义的方法联系## – Norto23 2013-05-02 03:46:49