2014-10-17 90 views
0

我很難形成適當的ActiveRecord查詢來搜索具有城市字段的廚房和有日期字段的餐食。搜索多個ActiveRecord模型

class Kitchen < ActiveRecord::Base 
    belongs_to :user 
    has_many :meals, through: :user 
end 

class User < ActiveRecord::Base 
    has_one :kitchen 
    has_many :meals 
end 

class Meal < ActiveRecord::Base 
    belongs_to :user 
    delegate :kitchen, to: :user 
end 

我想做的事的東西線:

date = Date.new(params[:date][:year].to_i, params[:date][:month].to_i, params[:date][:day].to_i) 
@meals = Meal.where(meal_date: date) 
@meals.reject { |meal| meal.kitchen.city.downcase != params[:city].downcase } 
+0

你好夥計啓動器!餐和廚房沒有任何關聯,所以'meal.kitchen'會炸燬。那裏有關係嗎? – Anthony 2014-10-17 16:01:40

+0

嘿,朋友!你從哪個隊列畢業?我推出了2013年秋季。 – Richard 2014-10-17 17:41:03

+0

我更新了我的代碼。我錯過了協會。 – Richard 2014-10-17 17:51:08

回答

0

由於@Anthony指出需要膳食和廚房之間添加關聯,那麼你應該能夠進行查詢對Meal基於Kitchen的城市。

class Kitchen < ActiveRecord::Base 
    belongs_to :user 
    has_many :meals 
end 

class User < ActiveRecord::Base 
    has_one :kitchen 
    has_many :meals 
end 

class Meal < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :kitchen 
end 

例如,像:

Meal.joins(:kitchen).where(meal_date: date, kitchen: {city != params[:city]}) 

更多信息請參見Conditions on Joined Tables