• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

钢轨关联 – 您将如何表达这种关系?

ruby-on-rails 来源:truthSeekr 6次浏览

我想弄清楚表示下列关系的最佳方法。钢轨关联 – 您将如何表达这种关系?

Newspaper has_many Articles 
Newspaper has_many Subscribers 

订户被允许保存他们的个人页面的文章。

两个问题:

1)关系如何在轨道中看起来像? “保存”操作看起来如何?

的使用的has_many似乎以下不正确的对我说:

class ArticleController < ApplicationController 
    def save 
    a = Article.find(101) 
    @user.saved_articles << a 
    end 
end 

2)我是否需要加入一个看起来像这个表Saved_Articles?

Saved_Articles 
---------------- 
user_id, article_id 

===========解决方案如下:

你所描述的是一种多对多的关系。在Rails的协会而言,这是定义它的一种方式:

class Newspaper 
    has_many :articles 
    has_many :subscribers 
end 

class Subscriber 
    belongs_to :newspaper 
    has_and_belongs_to_many :articles 
end 

class Article 
    belongs_to :newspaper 
    has_and_belongs_to_many :subscribers 
end 

使用has_and_belongs_to_many,您将需要一个连接表,但它需要被调用articles_subscribers而且会对subscriber_idarticle_id领域:

articles_subscribers 
-------------------- 
article_id 
subscriber_id 

save行动,那么看起来像以下,假设@user是的Subscriber一个实例:

class ArticlesController < ApplicationController 
    def save 
    @user.articles << Article.find(params[:id]) 

    # handle the response - render or redirect 
    end 
end 

有关更多信息,请参见http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_and_belongs_to_many上has_and_belongs_to_many


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)