假设我有一个像这样的帖子模型:
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
然后让我们说X
和Y
和Z
使用他们的帐户创建了一个帖子。
如果登录X
,我可以通过以下方式清楚地显示他在帖子中的帖子:
current_user.post
但出于某种原因,我还想要一个不属于X
的帖子,或者说arbitrary user
?
有什么方法我可以采取current_user
对象并传递一些方法或类似的东西?
我只是想说我想获得一个帖子,除了特定用户或例如current_user(登录的用户) 感谢
答案 0 :(得分:0)
但出于某种原因,我还想要一个不属于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)
P.S:范围必须添加到Post
模型中。
答案 1 :(得分:0)
好吧,你必须编写一个自定义查询。
Post.where('user_id IN (#{current_user.id}, #{another_user.id})')