这是一个漫长的过程,但如果您还没有实现,那么您最初可以通过这种方式创建模型。以下方法描述了更改现有数据库。
1) 为电子邮件提供商创建一个新模型:
$ rails g model provider name
2) 这将创建带有名称字符串和时间戳的模型。它还创建了我们需要添加到架构中的迁移:
$ rake db:migrate
3) 添加迁移以将提供者 ID 添加到联系人中:
$ rails g migration AddProviderRefToContacts provider:references
4) 检查迁移文件以检查它是否正常,然后也进行迁移:
$ rake db:migrate
5) 好的,现在我们有了 provider_id,我们不再需要原来的 email_provider 字符串:
$ rails g migration RemoveEmailProviderFromContacts
6) 在迁移文件中,添加如下所示的更改:
class RemoveEmailProviderFromContacts < ActiveRecord::Migration
def change
remove_column :contacts, :email_provider
end
end
7) 完成后,迁移更改:
$ rake db:migrate
8) 让我们借此机会更新我们的模型:
联系人:belongs_to :provider
提供者:has_many :contacts
9) 然后,我们在视图中的 _form.html.erb 部分设置下拉逻辑:
<div class="field">
<%= f.label :provider %><br>
<%= f.collection_select :provider_id, Provider.all, :id, :name %>
</div>
10) 最后,我们需要自己添加提供者。一种最好的方法是使用种子文件:
Provider.destroy_all
gmail = Provider.create!(name: "gmail")
yahoo = Provider.create!(name: "yahoo")
msn = Provider.create!(name: "msn")
$ rake db:seed