我想在两个模型之间建立多对多的关系,我想知道一步一步做什么。我想解释如何进行迁移以及如何理想地创建模型。我现在正在尝试做的方式是:
我在Ruby命令行中创建了两个模型:
rails g model Location name:string
rails g model Datetime date:datetime
现在我必须打开最近创建的模型并添加:
//models/location.rb
class Location < ActiveRecord::Base
has_and_belong_to_many :datetimes
end
//models/datetime.rb
class Datetime< ActiveRecord::Base
has_and_belong_to_many :locations
end
现在显然我必须进行迁移,但我不明白它是什么,而且我想最老版本的一些来源确实让我感到困惑。有人可以详细解释一下吗?
Obs:有一些类似的问题但他们没有回答我的问题,因为他们没有深入解释该怎么做。
答案 0 :(得分:1)
正如ruby教程所建议的,我们生成了一个新的迁移:
rails g migration CreateDatetimesAndLocations
在此迁移中,我有:
class CreateDatetimesAndLocations < ActiveRecord::Migration
def change
create_table :locations_datetimes, id:false do |t|
t.belongs_to :datetime, index: true
t.belongs_to :location, index: true
end
end
end
这与ruby教程完全相同。现在我有了这个控制器,我正在测试,它就是这样:
class WeatherController < ApplicationController
def data
@location = Location.new
@location.name = "test"
@datetime = Datetime.new
@datetime.date = DateTime.new(2001,2,3)
@location.datetimes << @datetime // **PROBLEM ON THIS LINE**
@location.save
@location = Location.new
@location.name = "teste2"
@location.locations << @location
@locations = Location.all //(show locations in view)
end
end
我遇到的问题是因为locations_datetimes必须是datetimes_locations(显然是按字母顺序)。