我有两张桌子:餐厅和餐厅
restaurant has_many meals
和meal belongs_to restaurant
。
因此,每餐都有restaurant_id
列。
我的控制器中有一个@meals_search
变量,它是搜索栏中搜索用户的一份用餐清单。
我想显示与@meals_search.restaurant_id
对应的餐馆,但到目前为止,我无法找到正确的ActiveRecord查询。
例如,如果@meals_search.pluck(:restaurant_id)
等于[1,7,44,53],那么我想创建一个@restaurants
变量来存储id为1,5,44和53的餐馆。
我填充@meals_search变量,如下所示:
meals_controller.rb
@meals_search = @meals.search(params[:search])
model.meal.rb
belongs_to :restaurant
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
all
end
end
有什么想法吗?
答案 0 :(得分:1)
如果我理解你的问题,你只需要这样做:
override func sizeForItem(at index: Int) -> CGSize {
calculateDimensions()
let size = CGSize(width: collectionContext!.containerSize.width, height: sectionHeight)
return size
}
这使用ActiveRecord subset conditions。
上述查询转换为:
@restaurants = Restaurant.where(id: @meals_search.pluck(:restaurant_id))
答案 1 :(得分:1)
如果我理解你的问题,你想要这样的东西吗?
@restaurants = Restaurant.where(id: @meals_search.pluck(:restaurant_id))
答案 2 :(得分:1)
您还可以使用map
pluck
内容
@restaurants = Restaurant.where(id: @meals_search.map {|m| m.restaurant_id})