我是设计新手,我无法找到解决此问题的方法:我希望得到/显示与用户关联的所有帖子不用户已登录。
我有以下模型关联:
user.rb
has_many :posts
和 post.rb
belongs_to :user
我怎么能这样做?我正在寻找以下内容:
- not_current_user.posts.all.each do |post|
= post.foo
= post.bar
是否有某种方法或方法可以实现这样的目标?
如果我不清楚或者我碰巧错过了答案,请告诉我。
干杯
答案 0 :(得分:1)
使用posts = Post.where('user_id != ?', current_user.id)
然后posts.each do ...
答案 1 :(得分:1)
首先,我建议不要在视图中使用这种类型的逻辑。最好在其他地方使用此逻辑,并在视图中呈现posts对象。这将您的视图逻辑与模型和控制器逻辑分离。
要获取与用户无关的帖子,现在您只需查询数据库
即可# app/controllers/posts_controller.rb
@posts = Posts.where.not(user_id: current_user.id) # syntax for Rails 4.0+
答案 2 :(得分:1)
可能有这样的事情:
post.rb
scope :all_other_than_created_by_user -> { |user| where(['user_id != ?', user.id]) }
在控制器中:
@posts = Post.all_other_than_created_by_user(current_user)
并在视图中使用它:
- @posts.each do |post|
= post.foo
= post.bar
编辑:我把它更改为实际在控制器中进行数据库查询,这比在视图中进行更好。
答案 3 :(得分:1)
我猜你可能意味着:
user.rb :has_many :posts
和 post.rb :belongs_to :user
你可以试试这个:
@posts = Post.where.not(user_id: current_user.id)
然后在视图中:
- @posts.each do |post|
= post.foo
= post.bar