2014-01-17 2 views
1

у меня есть три модели, которые взаимодействующая -@ users.includes по has_many Assocation HAS_ONE ассоциаций

Users has_one CommonApp 

CommonApp has_many Cities 

У меня есть небольшой вид на индексной странице пользователя, и хотел бы, чтобы отфильтровать @users от того, или нет, что связанный с пользователем common_app связан с городом с 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 не связан с: городов.

Как бы изменить приведенное выше, чтобы оно касалось ассоциации пользователя @ common_app с городами?

ответ

1

Самый простой способ, вероятно, чтобы позволить прямой доступ к городам через пользователя в модели пользователя:

has_many :cities, through: :common_app 

Затем вы можете использовать код фильтрации, как вы написали это.

+0

А, это имеет смысл Росс! Благодаря :) –

Смежные вопросы