通过关联搜索的干净方式

时间:2015-02-13 08:22:34

标签: 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

enter image description here

对于一个service和一个table,我有一个order。 我想要concern来设置订单。

module CurrentOrder
  extend ActiveSupport::Concern
  private
    def set_order
      @order = .......
    end
end

找到此订单的干净“铁路”方式是什么?

3 个答案:

答案 0 :(得分:2)

假设您有servicetable个变量分别持有ServiceTable个实例:

order = service.orders.find_by(table_id: table.id)

答案 1 :(得分:1)

你可以简单地做到这一点

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)

答案 2 :(得分:1)

理想情况下取决于您的结果。 假设你有table_id和service_id,所以你不必加载table&amp;服务

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