Как задать несколько отношений между моделями в рельсах, используя ассоциации ActiveRecord - PullRequest
0 голосов
/ 18 декабря 2009

Скажем, есть две модели: Пользователь и Пост, я хочу отслеживать, кто прочитал какой пост, и кто пишет какой пост, какой пользователь добавил в избранное, какие посты и т. Д. Затем я придумаю следующее решение:

class User < ActiveRecord::Base
  has_many :writings
  has_many :posts, :through => :writings
  has_many :readings
  has_many :posts, :through => :readings
  #..
end

class Post < ActiveRecord::Base
  has_many :writings
  has_many :posts, :through => :writings
  #...
end

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

@user.posts #...

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

1 Ответ

10 голосов
/ 18 декабря 2009

Вы хотите что-то вроде этого:

class User < ActiveRecord::Base
  has_many :writings
  has_many :posts, :through => :writings
  has_many :readings
  has_many :read_posts, :through => :readings, :class_name => "Post"
  #..
end

Давая названию ассоциации нечто иное, чем просто: посты, на которые вы можете ссылаться по отдельности. Теперь ...

@user.posts # =>  posts that a user has written via writings
@user.read_posts # => posts that a user has read via readings
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...