2014-04-26 42 views
0

我有一個Rails 4.1的應用程序有以下關係:優化模型設置找到自己的崗位

  • 用戶的has_many博客,博客所屬的用戶通過博客
  • 帖子belongs_to的
  • 用戶的has_many帖子博客
  • 博客的has_many帖子

這種類型的關係,讓我做一些事情,如:

@user = User.create(name: 'Sally') 
@blog = @user.blogs.create(title: 'New Blog') 
@blog.posts.create(title: 'New Post', content: 'Hello World') 

如果你追溯回來,你會看到薩利創建了一個博客,標題爲新博客,其中有一篇文章稱爲新文章。

如何過讓說你邀請了喬治的博客做客作家,所以讓我們假設你有一些將用戶添加到博客一種方法:

@user_george = User.create(name: 'George') 
@blog.add_user(@user_george.id) 

大,所以現在喬治可以發佈博客:

@user_george.blogs.find_by_id(@blog.id).posts.create(title: 'Georges Post', content: 'Some content') 

現在我們可以搜索georges帖子和sallies帖子。如何處理這些問題,如果只給出以json形式返回的博客對象。到目前爲止,這個博客有兩個用戶,兩個帖子。找到一個職位(模型級別),目前的方法是直接通過用戶模型:

User.find_by_id(x).posts.all() 

有幾個問題與此,我已經找到。一個喬治不能被添加到博客,因爲一個特定的博客屬於一個用戶(我假設用戶有很多,並通過連接表屬於博客blogs_users會解決這個問題嗎?)另外我怎麼知道是誰寫了什麼博文這是作爲API提供給你的嗎?因此,可以說俏皮話想用這個來顯示她的兩個職位和喬治的客戶後,在她的網站......

回答

0

1喬治不能被添加到博客,因爲一個特定的博客屬於一個用戶

一種方法是定義兩個類型關聯引用從BlogUser模式,是這樣的:

class Blog < ActiveRecord::Base 
    has_one :owner, class_name: "user", foreign_key: :owner_id 
    has_many :users 
end 

這樣,許多用戶可能屬於一個博客,而它只有一個所有者。

2 - 我怎麼想就知道是誰寫的什麼職位

您當前的設置不支持做什麼博客:

@user.posts.includes(:blog) 
#should give you all posts for user George along with blog details for each post 

3-如何建立一個優化設計? (我的意見)

我學會了(艱難的方式)在設計時做出最佳解決方案,從一開始就試圖使它變得完美無效!開始試驗你的想法,通過做出小的改變,你將逐漸達到你的最佳解決方案。

我想說的是「不要過度認爲它」,因爲直到你玩它,你永遠都不會發現有什麼問題。