Тип отношений в Rails - PullRequest
0 голосов
/ 13 мая 2011

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

Итак, у меня есть модель статьи и модель пользователя (придумать).

Я бы хотел, чтобы пользователь добавил статью либо в режиме Follow, либо в режиме Just Read Later.

, поэтому UserArticleAssociation имеет article_id, user_id и тип ассоциации.Я не понимаю, как правильно реализовать эту функцию.Я мог бы взломать это, но я не хочу.

Любое руководство по подобному будет отличной помощью.

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Попробуйте это:

class User < ActiveRecord::Base
  has_many :user_articles

  has_many :read_user_articles, :class_name => "UserArticle", 
              :conditions => {:mode => "read"}

  has_many :follow_user_articles, :class_name => "UserArticle", 
              :conditions => {:mode => "follow"}

  has_many :articles,       :through => :user_articles

  has_many :read_articles,  :through => :read_user_articles, :source => :article
  has_many :follow_articles,:through => :follow_user_articles,:source => :article

end    

# Add a column called mode of type string (follow, read)
class UserArticle < ActiveRecord::Base
  belongs_to :user
  belongs_to :article
end

class Article < ActiveRecord::Base
  has_many :user_articles
  has_many :read_user_articles, :class_name => "UserArticle", 
              :conditions => {:mode => "read"}

  has_many :follow_user_articles, :class_name => "UserArticle", 
              :conditions => {:mode => "follow"}

  has_many :readers,  :through => :read_user_articles, :source => :user
  has_many :followers,:through => :follow_user_articles,:source => :user
end

Теперь вы можете сделать следующее:

Чтобы добавить статью для чтения / следования категории:

user.read_articles << article
user.follow_articles << article

OR

article.reader << user
article.follower << user

Для доступа к статьям

user.read_articles
user.follow_articles

Для доступа к пользователям

article.readers
article.followers
0 голосов
/ 13 мая 2011

Вы должны использовать has_many: через ассоциацию. Здесь есть Railscast: http://railscasts.com/episodes/47-two-many-to-many

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