Проблема ассоциаций с Rails 3: у полос есть коды, у пользователей есть коды, но у пользователей нет полос ... Как мне изменить - PullRequest
0 голосов
/ 18 января 2012

У меня есть пользователи, полосы и коды

У полос много кодов, у пользователей много кодов, но у пользователей и полос нет никакой связи.

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

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

Идеи?

1 Ответ

0 голосов
/ 18 января 2012

РЕДАКТИРОВАТЬ: Я только что заметил, что ваш вопрос говорит, что вы не хотите этот 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...