A和B有多对多的关系。在B的视图中,我有一个表单来创建一个新的B,其中包含一个新名称和一个新的A(或许多)关联。
例如:
创建新B
名称: 答:
创建新A时也会做同样的事情。我该怎么做?控制器/视图/模型是什么样的?
答案 0 :(得分:0)
通常,当两个表之间具有多对多关系时,需要连接表,因为数据库不能水平扩展。
首先创建你的联接表:
class AsBs< ActiveRecord::Migration
def change
create_table :as_bs do |t|
t.integer :as_id
t.integer :bs_id
end
end
end
然后在你的模特中:
class A < ActiveRecord::Base
has_many :bs, through: :as_bs
end
class B < ActiveRecord::Base
has_many :as, through: as_bs
end
启动Rails控制台,了解如何与数据库中的关联数据进行交互和访问。
现在在这里创建一个记录是你应该在AsBsController中做的事情:
def create
@asbs = AsBs.find_or_create_by(as_id : params[:as_id], bs_is: params[bs_id]
end
然后保存记录。