Если я кое-что узнал о Rails 3, то, что если мне трудно что-то делать, я, вероятно, делаю это неправильно.Поэтому я ищу помощи.
У меня есть несколько моделей, которые связаны между собой многими.
Я могу без проблем создавать ассоциации в моделях.Моя проблема заключается в том, как построить контроллеры для работы с этими отношениями.Я попытаюсь привести пример, если вы не видите, куда я иду с этим.
Например ...
class Account < ActiveRecord::Base
has_many :locations
end
class Contact < ActiveRecord::Base
has_many :locations
end
class Location < ActiveRecord::Base
has_and_belongs_to_many :accounts
has_and_belongs_to_many :contacts
end
Допустим, у меня есть вышеуказанные модели.Это были бы мои ресурсы ...
resources :accounts do
resources :locations
end
resources :contacts do
resources :locations
end
resources :locations do
resources :accounts
resources :contacts
end
Так что просто для краткости, скажем, я хочу список всех местоположений для учетной записи.Вышеуказанные маршруты будут предположительно иметь учетную запись / 1 / location.Таким образом, посадка меня в местах # index.
Надеюсь, я не облажался с моим примером на данный момент, но каков наилучший способ построить это действие, так как оно действительно имеет несколько заданий ... как минимум в местахдля учетной записи, контакта и всех мест.
Итак, я получаю что-то вроде этого ...
class LocationController < ApplicationController
def index
if params[:account_id]
@locations = Location.find_all_by_account_id(params[:account_id])
elsif params[:contact_id]
@locations = Location.find_all_by_contact_id(params[:account_id])
else
@locations = Location.all
end
respond_with @locations
end
end
Обновление № 1: Чтобы уточнить, как я получаю некоторые ответы, которыепредложить мне изменить мои отношения модели.Я работаю с устаревшей системой, в которой я НЕ могу изменить отношения на данном этапе.В конечном счете, моя цель - очистить базу данных и отношения, но пока я не могу.Поэтому мне нужно найти решение, которое работает с этой конфигурацией.