我对Rails很陌生,所以对我来说并非一切都很清楚。我有以下型号。
class Order < ActiveRecord::Base
has_many :sales
belongs_to :user
end
class Sale < ActiveRecord::Base
has_many :brands
belongs_to :warehouse
belongs_to :user
belongs_to :order
end
我想要做的是连接这两个模型,因此每个Sale都有一个父Order_ID。你会如何在你的控制器中做到这一点?我很困惑。谢谢你们!
答案 0 :(得分:3)
您应该查找如何创建has_many/belongs_to
关联:
要获得所需内容,请使用以下内容:
#app/models/order.rb
class Order < ActiveRecord::Base
has_many :sales
end
#app/models/sale.rb
class Sale < ActiveRecord::Base
belongs_to :order
end
您需要设置foreign_key
模型的Sale
,以便每次调用@sale
对象时,它都会与@order
关联:
$ rails g migration AddForeignKeyToSales
#db/migrate/add_foreign_key_to_sales________.rb
class AddForeignKeyToSales < ActiveRecord::Migration
def change
change_table :sales do |t|
t.references :order, after: :id
end
end
end
$ rake db:migrate
这会将销售表设置为包含order_id
外键,然后您可以使用以下控制器设置:
#config/routes.rb
resources :orders do
resources :sales #-> url.com/orders/:order_id/sales/new
end
#app/controllers/sales_controller.rb
class SalesController < ApplicationController
def new
@order = Order.find params[:order_id]
@sale = @order.sales.new
end
def create
@order = Order.find params[:order_id]
@sale = @order.sales.new order_params
@sale.save
end
end