2013-05-03 194 views
0

我想創建一個「業主和物業之間的一個一對多的關係」,但我不知道爲什麼我收到此錯誤,生成模型我試圖add_index後運行耙分貝前:遷移但出事了 注:這是第一次使用Ruby on Rails的創建兩個表之間的關係,我搜索在rubyonrails導把餘did't找到答案add_index錯誤[Ruby on Rails的]

我遷移文件:

class CreateProperties < ActiveRecord::Migration 
    def change 
    create_table :properties do |t| 
     t.string :p_street 
     t.string :p_city 
     t.string :postcode 
     t.string :type 
     t.integer :rooms 
     t.integer :rent 
     t.integer :owner_id 

     t.timestamps 
    end 
    add_index :owner_id 
    end 
end 

錯誤出現:

== CreateProperties: migrating =============================================== 
-- create_table(:properties) 
    -> 0.0712s 
-- add_index(:owner_id) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

wrong number of arguments (1 for 2)/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/schema_statements.rb:350:in `add_ind 
ex' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:466:in `block in method_missing' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:438:in `block in say_with_time' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:438:in `say_with_time' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:458:in `method_missing' 
/root/rails_project/dream_home/db/migrate/20130503044654_create_properties.rb:14:in `change' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:407:in `block (2 levels) in migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:407:in `block in migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in `with_connection' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:389:in `migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:528:in `migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:720:in `block (2 levels) in migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:775:in `call' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:775:in `block in ddl_transaction' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/transactions.rb:208:in `transaction' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:775:in `ddl_transaction' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:719:in `block in migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:700:in `each' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:700:in `migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:570:in `up' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/migration.rb:551:in `migrate' 
/var/lib/gems/1.9.2/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:193:in `block (2 levels) in <top (required)>' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:246:in `call' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:241:in `each' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:101:in `each' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
/var/lib/gems/1.9.2/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

回答

0

add_index需要一個表名

add_index :properties, :owner_id

+0

感謝幫助菜鳥跟我一樣:d – 2013-05-03 05:24:00

+0

快樂幫:) – lebreeze 2013-05-03 05:24:46

+0

在properties.rb我要補充「belongs_to的:主人」,並在owners.rb我要補充「的has_many:屬性」,和多數民衆贊成我是對的還是需要加入控制器? – 2013-05-03 05:27:08

2

你必須在參數中提到的表名。 嘗試add_index (:properties,:owner_id)

+0

感謝NikDP幫助:) – 2013-05-03 05:24:27

+0

你應該給予好評我答,如果你的作品。 – Deepika 2013-05-03 05:29:23

+0

我知道,但我在這裏是一個新來者,我沒有足夠的聲譽:( – 2013-05-03 05:31:27