そこで、Project
、 、 の3 つのモデルを作成しようEntry
としていますUser
。AProject
は多数Entries
あり、aaUser
は多数ありEntries
ます。上記の 3 つのモデルを次のコマンドでスキャフォールディングしました。
rails g scaffold Project title:string
rails g scaffold Entry project:project_id entry_for:user_id created_by:userid \
date:string start_time:string end_time:string total:string type_of_work:string \
on_off_site:string phase:string description:text
rails g scaffold User name:string
Entry
モデル内の他のテーブルの外部キーを手動で入力した部分を、おそらく完全にだましていたことに気づきました。キーに関して異なるモデル間の関係をどの程度自動化するか分からないhas_many
belongs_to
ので、手動で外部キー フィールドを追加しようとしました。これは間違っていますか?
実行しようとするdb:migrate
と、次のエラーが表示されます。
undefined method `user_id' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007fc1bdf37970>
すべての外部キー フィールドを削除しようとしたが、上記のエラーが発生したため、これが私の移行です。
class CreateProjects < ActiveRecord::Migration
def change
create_table :projects do |t|
t.string :name
t.timestamps
end
end
end
class CreateEntries < ActiveRecord::Migration
def change
create_table :entries do |t|
t.string :project
t.string :project_id
t.user_id :entry_for
t.user_id :created_by
t.string :date
t.string :start_time
t.string :end_time
t.string :total
t.string :type_of_work
t.string :on_off_site
t.string :phase
t.text :description
t.timestamps
end
end
end
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.timestamps
end
end
end
class RemoveColumns < ActiveRecord::Migration
def self.up
remove_column :entries, :created_by
remove_column :entries, :entry_for
remove_column :entries, :project_id
end
def self.down
add_column :entries, :created_by, :user_id
add_column :entries, :entry_for , :user_id
add_column :entries, :project_id, :string
end
end
ご協力ありがとうございました!