假设我有一个像这样的Post Model:
class Post < ActiveRecord::Base
belongs_to :user
end
用户模型看起来像这样
class User < ActiveRecord::Base
has_many :posts, dependent: :destroy
# I have used devise gem for User management
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable,
:validatable, :authentication_keys => [:login]
end
然后,Lets SayX
和Y
AndZ
使用他们的帐户创建一个帖子。如果X
已登录,则只需执行以下操作即可清楚地在“视图”中显示他的帖子:
current_user.post
但是由于某种原因,我也想要不属于该职位的帖子,X
或者说arbitrary user
?有什么办法可以让我接受current_user
对象并通过某种方法或类似的东西?
我只是说我想获得除特定用户之外的帖子,例如current_user(已登录的用户),谢谢
但是由于某种原因,我还想要不属于X的帖子,或者可以说任意用户吗?
您可以使用范围来为任何特定用户获取帖子,如下所示:
scope :fetch_by_user, ->(user) { where(user: user }
然后从任何地方(如您的控制器)调用它,如下所示:
Post.fetch_by_user(another_user_object)
更新
如果要列出不是当前用户的所有帖子,请添加如下范围:
scope :posts_by_not_current_user, ->(user) { where.not(user: user) }
现在从控制器呼叫。
Post.posts_by_not_current_user(current_user)
PS:必须在Post
模型内部添加范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句