Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用ActiveRecord和Sinatra进行多维连接_Mysql_Ruby_Activerecord_Sinatra_Inner Join - Fatal编程技术网

Mysql 使用ActiveRecord和Sinatra进行多维连接

Mysql 使用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

我最近将一个表拆分为三个单独的表,现在很难将它们合并到一个列表中

我有场地 -他有很多订单 -有很多项目

试图列出某个场馆的所有订单和随附信息:

app.rb

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'。我认为我的模型关联是一团糟,但不确定如何重新格式化它们。