Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Ruby on rails 通过关联进行搜索的干净方法_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 通过关联进行搜索的干净方法

Ruby on rails 通过关联进行搜索的干净方法,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有以下模式: class Service < ActiveRecord::Base has_many :orders class Table < ActiveRecord::Base has_many :orders class Order < ActiveRecord::Base belongs_to :table belongs_to :service 找到此订单的干净方法是什么?假设服务和表变量分别保存服务和表实例: order = service

我有以下模式:

class Service < ActiveRecord::Base
  has_many :orders

class Table < ActiveRecord::Base
  has_many :orders

class Order < ActiveRecord::Base
  belongs_to :table
  belongs_to :service
找到此订单的干净方法是什么?

假设服务和表变量分别保存服务和表实例:

order = service.orders.find_by(table_id: table.id)
假设服务和表变量分别保存服务和表实例:

order = service.orders.find_by(table_id: table.id)
你可以简单地做到

service = Service.first #lets you take first service orders
table = Table.last #lets you take orders of last table
orders  = service.orders.where(table_id: table.id)
你可以简单地做到

service = Service.first #lets you take first service orders
table = Table.last #lets you take orders of last table
orders  = service.orders.where(table_id: table.id)

理想情况下,这取决于你的结果。 假设您有表id和服务id,所以不必加载表和服务

order = Order.where(table_id: table_id, service_id: service_id).first

理想情况下,这取决于你的结果。 假设您有表id和服务id,所以不必加载表和服务

order = Order.where(table_id: table_id, service_id: service_id).first

考虑一下我既有Service EyID和Table的ID,也不必同时加载这两种情况。我直接去查询订单。上面我已经写到,它通常取决于我们手边的结果和信息。考虑我既有Service EyID和Table SyID的场景,也不必同时加载这两种情况。我直接去查询订单。我在上面写过,这通常取决于我们手头的结果和信息。