我試圖訪問我的用戶對象中包含的屬性。 我的用戶型號爲has_many: posts
。在控制器中,我將如何訪問這些帖子?我會在模型中創建一個方法嗎?如何訪問模型中的變量
def posts
@posts = Post.find(User_id: params[:id])
end
或者我可以直接訪問用戶的帖子。 User.posts
因爲我目前居住在控制器中,控制器是否知道當前選擇的模型?或者我必須再次提取信息?
我試圖訪問我的用戶對象中包含的屬性。 我的用戶型號爲has_many: posts
。在控制器中,我將如何訪問這些帖子?我會在模型中創建一個方法嗎?如何訪問模型中的變量
def posts
@posts = Post.find(User_id: params[:id])
end
或者我可以直接訪問用戶的帖子。 User.posts
因爲我目前居住在控制器中,控制器是否知道當前選擇的模型?或者我必須再次提取信息?
您可以在數據庫中查詢所有職位與特定USER_ID,類似這樣的:
@posts = Post.where(user_id: params[:id])
或者,你可以先找到用戶,然後獲取與該用戶相關聯的所有帖子,這樣的:
user = User.find(params[:id])
@posts = user.posts
假設你的id在params中是你的用戶的id,你可以使用user = User.find(params[:id])
讓用戶和@posts = user.posts
獲得這個用戶的所有帖子。
所以,這不是你在哪裏,而是你在說什麼。
我敢肯定,你所熟悉的關係......
當你有關係,這意味着你可以從另一個得到一個關係,通過它們之間存在任何關聯。
如果我是我父親的兒子,那麼你可以通過檢查我父親的孩子直接找到我。 (你不必讓所有的孩子在村裏第一個)
所以,把我所有的故事上述在一起,你Post
和User
之間的關聯,可以隨時撥打user.posts
(user
是一個實例User
)和post.user
(post
是Post
的一個實例)
Ruby on Rails指南有關於關聯的部分,這正是您想要的。它在這裏:http://guides.rubyonrails.org/association_basics.html
簡而言之,因爲您在用戶模型中添加了一個關聯到多個帖子記錄,Rails將在您的用戶模型中構建一個名爲posts的輔助方法。您可以使用它來訪問與該用戶關聯的所有帖子。
當您創建帖子時,帖子記錄需要有一個名爲user_id的列。這將提供用戶和發佈模型之間的「物理」鏈接。您可以從用戶訪問的職位,像這樣:
user.posts each do |post|
# do something with post.content
end
拿到賽在帖中收集一些條件的職位,你可以查詢這樣的:
posts = user.posts.where(:something => 'matches criteria')
如果你知道,只有一個職位,匹配標準,你可以這樣做:
post = user.posts.where(:something => 'matches criteria').first
該post模型還需要一個belongs_to:用戶關聯。 (該belongs_to的會生成一個名爲用戶在崗模型,然後你可以用它來從後訪問用戶記錄一個輔助方法。)例如:
user_email = post.user.email
用戶記錄不需要,因爲Rails中POST_ID列知道user.post引用了發佈表並使用user_id自動生成查詢。
無論如何,我鏈接到上面的指南會給你所有你需要的信息,也可以。