@ users.includes由has_one association has_many association

时间:2014-01-17 00:14:46

标签: ruby-on-rails

我有三个相互影响的模型 -

Users has_one CommonApp

CommonApp has_many Cities

我在用户索引页面上有一个小表单,并希望根据该用户的关联common_app是否与@users的城市相关联来过滤params[:city_id]

现在我有

@city = City.find(params[:city_id]) if params[:city_id] && params[:city_id] != "0"
@users = @users.includes(:cities).where(cities: { id: @city }) if @city

我知道这是错误的,因为@users没有关联到:cities。

我如何更改以上内容,以便了解@用户的common_app与城市的关联?

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是允许用户模型中的用户直接访问城市:

has_many :cities, through: :common_app

然后你就可以使用过滤代码了。