Rails: я должен использовать has_many: through? - PullRequest
1 голос
/ 23 апреля 2011

Я пытаюсь выяснить, как наилучшим образом создать ассоциации для следующих моделей:

  • Пользователь
  • Категория
  • Пост
  • Комментарии

Вот требования, которые я пытаюсь выполнить:

  • Пользователь может иметь много сообщений
  • Сообщение принадлежит пользователю
  • Сообщение может иметь много комментариев
  • Комментарий принадлежит сообщению
  • Сообщение может принадлежать категории
  • У пользователя НЕ много категорий,(Количество категорий фиксировано и одинаково для всех пользователей)
  • В категории может быть много сообщений

С точки зрения маршрутизации я хотел бы иметь возможность доступа кразмещать сообщения в определенной категории для конкретного пользователя.Например:

http://domain.com/users/1/categories/1/posts

Поскольку нет прямой связи между пользователем и категорией, я не совсем уверен, как лучше установить ассоциации.И я полностью потерян, как настроить маршруты.

Вот что я имею для своих моделей:

class User < ActiveRecord::Base
  has_many :posts
end

class Category < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
  belongs_to :metric
  has_many :comments
end

class Comments < ActiveRecord::Base
  belongs_to :post
end

Это тот случай, когда я должен использовать has_many: сквозные отношения?Или что-то более сложное, например, полиморфные ассоциации?Заранее спасибо!

1 Ответ

1 голос
/ 23 апреля 2011

Да, было бы очень полезно использовать:

User has_many :comments, :through => :posts

Если хотите, вы также можете получить комментарии к категориям:

Category has_many :comments, :through => :posts 

Помните, что сквозная ассоциация - это просто средство, которое позволяет вам делать такие вещи, как user.comments напрямую (а через эту ассоциацию можно найти комментарий пользователя, относящийся к модели поста).

...