Mysql 使用ActiveRecord和Sinatra进行多维连接
我最近将一个表拆分为三个单独的表,现在很难将它们合并到一个列表中 我有场地 -他有很多订单 -有很多项目 试图列出某个场馆的所有订单和随附信息: app.rbMysql 使用ActiveRecord和Sinatra进行多维连接,mysql,ruby,activerecord,sinatra,inner-join,Mysql,Ruby,Activerecord,Sinatra,Inner Join,我最近将一个表拆分为三个单独的表,现在很难将它们合并到一个列表中 我有场地 -他有很多订单 -有很多项目 试图列出某个场馆的所有订单和随附信息: app.rb get "/:venue/orders" do @venue = Venue.find_by_handle(params[:venue]) @orders = Order.joins(:venue).where(:venues => {:handle => @venue.handle}) @items = Item
get "/:venue/orders" do
@venue = Venue.find_by_handle(params[:venue])
@orders = Order.joins(:venue).where(:venues => {:handle => @venue.handle})
@items = Item.joins(:order).where(:orders => {:id => @orders.id})
erb :"venue/index"
end
地点/索引.erb
<% @orders.each do |order| %>
<h3>Order <%= order.id %></h3>
<h4><%= @customer.email %></h4>
<% @items.each do |item| %>
<h5><%= item.quantity %> x <%= item.item %></h5>
<% end %>
<% end %>
命令
x
models.rb
class Order < ActiveRecord::Base
belongs_to :venue
belongs_to :customer
has_many :items
validates :venue_id, presence: true
end
class Item < ActiveRecord::Base
belongs_to :order
validates :order_id, :presence => true
validates :quantity, :presence => true
validates :item, :presence => true
end
class Customer < ActiveRecord::Base
has_many :orders
validates :email, :presence => true
end
class Venue < ActiveRecord::Base
has_many :customers, :through => :orders
has_many :orders
validates :name, :presence => true
validates :handle, :presence => true, :uniqueness => true
end
类顺序true
验证:数量,:存在=>true
验证:item,:presence=>true
结束
类Customertrue
结束
上课地点:订单
有很多订单吗
验证:name,:presence=>true
验证:句柄,:存在=>true,:唯一性=>true
结束
我收到一份“id”的命名报告,我理解,因为我没有查看具体的订单。我如何查询必要的项目?这样做的诀窍是:
@venue = Venue.includes({:orders => [:customer, :items]}).find_by_handle(params[:venue])
那么,在你看来:
<% @venue.orders.each do |order| %>
<h3>Order <%= order.id %></h3>
<h4><%= order.customer.email %></h4>
<% order.items.each do |item| %>
<h5><%= item.quantity %> x <%= item.item %></h5>
<% end %>
<% end %>
命令
x
我得到了“nil:NilClass的未定义方法'klass'。我想这与我的模型有关?我会和他们一起更新问题。我想你也需要找回客户。我将编辑我的答案。现在我得到的是“未找到名为'items'的关联;可能是您拼错了?”抱歉,请尝试切换:items和:orders around,同时编辑我的答案。我尝试了,然后我得到了“nil:NilClass的未定义方法'klass'。我认为我的模型关联是一团糟,但不确定如何重新格式化它们。