Ruby on rails 在Rails 5中添加关系
我在rails应用程序上创建了两个表:Ruby on rails 在Rails 5中添加关系,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在rails应用程序上创建了两个表:Contact和Category,使用ff: rails g控制器联系人姓名电子邮件 rails g车型类别标题 两者都已迁移。正如你所看到的,这两者没有关系。我的问题是如何建立关系,以便在联系人模型上有category\u id字段 有rails命令吗?或者一些我可以运行的迁移命令 更新: 我试图运行此程序,但在rails db:migrate上出现以下错误: rails aborted! SyntaxError: /home/jojo/Desktop/c
Contact
和Category
,使用ff:
rails g控制器联系人姓名电子邮件
rails g车型类别标题
两者都已迁移。正如你所看到的,这两者没有关系。我的问题是如何建立关系,以便在联系人模型上有category\u id
字段
有rails命令吗?或者一些我可以运行的迁移命令
更新:
我试图运行此程序,但在rails db:migrate
上出现以下错误:
rails aborted!
SyntaxError: /home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:5: syntax error, unexpected tSYMBEG, expecting end
t.string :email,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:7: syntax error, unexpected tSYMBEG, expecting end
t.string :phone,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:9: syntax error, unexpected tSYMBEG, expecting end
t.string :address,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:11: syntax error, unexpected tSYMBEG, expecting end
t.string :state,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:13: syntax error, unexpected tSYMBEG, expecting end
t.text :note
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:17: syntax error, unexpected end, expecting end-of-input
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:291:in `block in require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:257:in `load_dependency'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:291:in `require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:986:in `load_migration'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:982:in `migration'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:977:in `disable_ddl_transaction'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1350:in `use_transaction?'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1342:in `ddl_transaction'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1262:in `each'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1210:in `block in migrate'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1210:in `migrate'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1036:in `up'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1011:in `migrate'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <main>'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/command.rb:48:in `invoke'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands.rb:18:in `<main>'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:291:in `block in require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:257:in `load_dependency'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:291:in `require'
/home/jojo/Desktop/contacthub/bin/rails:9:in `<top (required)>'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/home/jojo/Desktop/contacthub/bin/spring:15:in `require'
/home/jojo/Desktop/contacthub/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
rails中止!
语法错误:/home/jojo/Desktop/contacthub/db/migrate/20200108110024\u create\u contacts.rb:5:语法错误,意外的tSYMBEG,预期结束
t、 字符串:电子邮件,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024_create_contacts.rb:7:语法错误,意外的tSYMBEG,预期结束
t、 字符串:电话,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024\u create\u contacts.rb:9:语法错误,意外的tSYMBEG,预期结束
t、 字符串:地址,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024\u create\u contacts.rb:11:语法错误,意外的tSYMBEG,预期结束
t、 字符串:state,
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024\u create\u contacts.rb:13:语法错误,意外的tSYMBEG,预期结束
t、 正文:注
^
/home/jojo/Desktop/contacthub/db/migrate/20200108110024\u create\u contacts.rb:17:语法错误,意外结束,预期输入结束
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/core\u ext/kernel\u require.rb:22:in'require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in`block in require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/load\u features\u index.rb:92:在“寄存器”中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in`require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/core\u ext/kernel\u require.rb:30:in'require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u-support/dependencies.rb:291:in`block in require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u support/dependencies.rb:257:in'load\u dependency'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u support/dependencies.rb:291:in'require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:986:in'load\u migration'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:982:in“migration”
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:977:在“禁用ddl_事务”中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1350:正在“使用”事务中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1342:in'ddl\u transaction'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1291:in“execute\u migration\u in\u transaction”
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1263:in`block in migrate\u without\u lock'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1262:in'each'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1262:in'migrate\u without\u lock'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1210:在“迁移中的块”中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1363:in“带锁”
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/migration.rb:1210:in“migrate”
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1036:in'up'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/migration.rb:1011:in“migrate”
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active\u record/tasks/database\u tasks.rb:172:在“迁移”中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activerecord-5.2.4.1/lib/active_record/railties/databases.rake:60:in `块(2层)in'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands/rake/rake_command.rb:23:in'block in perform'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands/rake/rake_command.rb:20:in'perform'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/command.rb:48:in'invoke'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/railties-5.2.4.1/lib/rails/commands.rb:18:in`'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/core\u ext/kernel\u require.rb:22:in'require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in`block in require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/load\u features\u index.rb:92:在“寄存器”中
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in`require_with_bootsnap_lfi'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load\u path\u cache/core\u ext/kernel\u require.rb:30:in'require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u-support/dependencies.rb:291:in`block in require'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u support/dependencies.rb:257:in'load\u dependency'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/activesupport-5.2.4.1/lib/active\u support/dependencies.rb:291:in'require'
/home/jojo/Desktop/contacthub/bin/rails:9:in`'
/home/jojo/.rvm/gems/ruby-2.6.0/gems/spring-2
class CreateContacts < ActiveRecord::Migration[5.2]
def change
create_table :contacts do |t|
t.string :name,
t.string :email,
t.string :mobile,
t.string :phone,
t.string :country,
t.string :address,
t.string :city,
t.string :state,
t.string :zip,
t.text :note
t.references :category, foreign_key: true
end
end
end
add_reference :contacts, :category, foreign_key: true, null: false
add_index :contacts, :category_id
create_table :contacts do |t|
t.references :category, foreign_key: true, null: false, index: true
...
end
class CreateContacts < ActiveRecord::Migration[5.2]
def change
create_table :contacts do |t|
t.string :name
t.string :email
t.string :mobile
t.string :phone
t.string :country
t.string :address
t.string :city
t.string :state
t.string :zip
t.text :note
t.references :category, foreign_key: true
end
end
end
numbers = {
one: "eins",
two: "zwei",
three: "drei"
}