2012-01-18 3 views
0

У меня есть пользователи, Группа и кодыRails 3 ассоциации выпуск: полосы имеют коды, пользователи имеют коды, но пользователи не имеют полос ... Как я должен изменить

Bands имеют много кодов, пользователи имеют много кодов, но пользователи и группы не имеют никаких отношений.

Группы имеют много кодов, потому что пользователи создают коды, относящиеся к группе. Может быть много диапазонов, для которых у пользователя есть коды для ...

Я думаю, что у пользователя может быть группа, но я не хочу, чтобы мои URL-адреса были пользователями /: id/bands /: id/codes /: id

Идеи?

+0

Теперь я в замешательстве. Какой у Вас вопрос? –

ответ

0

EDIT: Я только заметил, что ваш вопрос говорит, что вы делаете не хотите этот url. Мой ответ обратный, извините.

Если это то, что нужно, чтобы ваш URL был, то вы должны определенно сделать, чтобы у Пользователей было много групп, а у групп много кодов. Затем используйте has_many :though, чтобы пользователи имели много кодов. Как это:

class Code < ActiveRecord::Base 
    belongs_to :band 
    belongs_to :user, :through => :band 
end 

class Band < ActiveRecord::Base 
    has_many :codes 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :bands 
    has_many :codes, :through => :bands 
end 

Затем настроить свои маршруты, используя вложенные ресурсы:

map.resources :users do |users| 
    users.resources :bands do |bands| 
    bands.resources :codes 
    end 
    end 
end 

Это сделало бы code_path(1, 2, 3) карту /users/1/bands/2/codes/3. И ваше действие CodesController#show будет иметь доступ к user_id (1), band_id (2) и id (3).

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