.each 基于嵌套资源的语句
.each Statement Based on Nested Resources
我正在尝试根据嵌套资源的特性编写 .each 语句。我的应用程序中表之间的关系定义如下:
User has_many Posts
Post belongs_to User
Post belongs_to Category
Category has_many Posts
从给定类别的页面中,我想索引所有在该类别中拥有 post 的用户。实现此目标的最佳方法是什么?
我一直在尝试以下语句的各种形式,但没有成功。
<% User.where(user.post.category == @category).each do |category| %>
您可以使用以下查询搜索用户,然后将其列出
<% @users = User.joins(:posts).where('posts.category_id = ?',@category.id) %>
<% @users.each do |user| %>
注意:您可以将上面的第 1 行放在您的控制器中
更好的方法是在控制器方法中设置 @users
或创建任何 辅助方法 以在视图中获取结果
def your_method ## or any other method
.....
.....
@users = User.joins(:posts).where('posts.category_id = ?',@category.id)
end
然后在视图中
#your_view.html.erb
<% @users.each do |user| %>
<% end %>
在控制器中:
@users = User.joins(:post).where(posts: {category_id: @category.id})
可见
<% @users.each do |user| %>
<Your html code>
<% end %>
永远不要让您的业务逻辑出现在视图中。建议将该查询作为模型中的范围。
在user.rb
scope :post_users, -> (category_id) {joins(:post).where(posts: {category_id: category_id})}
在控制器中
@post_users = User.post_users(@category.id)
我正在尝试根据嵌套资源的特性编写 .each 语句。我的应用程序中表之间的关系定义如下:
User has_many Posts
Post belongs_to User
Post belongs_to Category
Category has_many Posts
从给定类别的页面中,我想索引所有在该类别中拥有 post 的用户。实现此目标的最佳方法是什么?
我一直在尝试以下语句的各种形式,但没有成功。
<% User.where(user.post.category == @category).each do |category| %>
您可以使用以下查询搜索用户,然后将其列出
<% @users = User.joins(:posts).where('posts.category_id = ?',@category.id) %>
<% @users.each do |user| %>
注意:您可以将上面的第 1 行放在您的控制器中
更好的方法是在控制器方法中设置 @users
或创建任何 辅助方法 以在视图中获取结果
def your_method ## or any other method
.....
.....
@users = User.joins(:posts).where('posts.category_id = ?',@category.id)
end
然后在视图中
#your_view.html.erb
<% @users.each do |user| %>
<% end %>
在控制器中:
@users = User.joins(:post).where(posts: {category_id: @category.id})
可见
<% @users.each do |user| %>
<Your html code>
<% end %>
永远不要让您的业务逻辑出现在视图中。建议将该查询作为模型中的范围。
在user.rb
scope :post_users, -> (category_id) {joins(:post).where(posts: {category_id: category_id})}
在控制器中
@post_users = User.post_users(@category.id)