如何将collection_select用于具有关联的表

时间:2015-07-15 17:49:20

标签: ruby-on-rails ruby-on-rails-4 associations

我有以下设置:

Table.rb

belongs_to: table

Order.rb

order

boolean表的finished值为collection_select(:order, :table_id, Table.all, :id, :table, prompt: false) ,我有这个脚本:

if all orders for this table have order.finished == true OR if it doesn't have any orders at all { list that table }

我需要做的只是选择那些包含所有订单完成订单的表。所以

GET 6032176243294?fields=object_type,thumbnail_url,object_story_id
{
 "object_type": "SHARE",
 "thumbnail_url": "https://biglongurl.com",
 "id": "6032176243294"
 "object_story_id": "1234_5678"
}

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你需要在table.rb中创建一个方法,它返回那些有订单并已完成的表或那些没有订单的表。

def self.table_with_finished_or_no_orders
  Table.joins("left join orders on orders.table_id=tables.id).where("orders.finished = ? OR orders.table_id is NULL",  true)
end

您将在此类视图中调用此方法

  collection_select(:order, :table_id, Table.table_with_finished_or_no_orders, :id, :table, prompt: false)

我想我的查询是根据您的要求。