我有两个模型,订单和客户:
create_table "orders", force: :cascade do |t|
t.integer "customer_id", limit: 4
t.decimal "subtotal", precision: 10
t.decimal "tax", precision: 10
t.decimal "total", precision: 10
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "customers", force: :cascade do |t|
t.string "name", limit: 255
t.string "email", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我列出了所有订单,但希望在html表中包含客户名称,而不是客户ID。
我的订单控制器索引方法是:
def index
@orders = Order.all.order('id DESC')
end
如何在每个订单的索引方法中包含客户名称?
答案 0 :(得分:1)
您需要在客户和订单类之间设置relationship。正如您在订单表中添加了customer_id
列,我可以假设客户可以有多个订单,或者换句话说,可能有许多不同的订单可能由同一客户订购(除非您想要限制)。因此,您将has_many
关联添加到Customer模型。
<强> Customer.rb:强>
class Customer < ActiveRecord::Base
has_many :orders
end
随后,订单属于客户,因此我们添加相应的belongs_to
关联。
<强> Order.rb:强>
class Order < ActiveRecord::Base
belongs_to :customer
end
在 HTML表格中添加以下单元格:
<td><%= order.customer.name %></td>