根据管理员是否在场重构 ruby 代码
Refactor ruby code based on the admin present or not
我想重构这段代码:
def self.find_posts(page, per_page, author_id, user)
if user.admin?
paginate(page: page, per_page: per_page) #fetches on the basis of per_page
else
paginate(page: page, per_page: per_page).where(author: author_id) #Based on author_id
end
end
Post.paginate(page: page, per_page: per_page)
重复了两次所以我想删除它。
这是我尝试过的:
def self.find_posts(page, per_page, author_id, user)
paginate(page: page, per_page: per_page) #fetches the no of per_page
if user.admin?
#not getting what should I write here
else
where(author: author_id) #Based on author_id
end
end
此代码也不起作用,我知道 paginate
不是最后一句话。我可以在那里使用 return
但不知何故我不明白该怎么做。
我不确定是否有必要重构它。但只是为了给你选择:
您可以这样做(或之前构建哈希)
paginate(page: page, per_page: per_page).where(user.admin? ? {} : {author: author_id})
或将默认范围添加到您的 post
我会写:
def self.find_posts(page, per_page, author_id, user)
posts = user.admin? ? Post.all : Post.where(author: author_id)
posts.paginate(page: page, per_page: per_page)
end
我想重构这段代码:
def self.find_posts(page, per_page, author_id, user)
if user.admin?
paginate(page: page, per_page: per_page) #fetches on the basis of per_page
else
paginate(page: page, per_page: per_page).where(author: author_id) #Based on author_id
end
end
Post.paginate(page: page, per_page: per_page)
重复了两次所以我想删除它。
这是我尝试过的:
def self.find_posts(page, per_page, author_id, user)
paginate(page: page, per_page: per_page) #fetches the no of per_page
if user.admin?
#not getting what should I write here
else
where(author: author_id) #Based on author_id
end
end
此代码也不起作用,我知道 paginate
不是最后一句话。我可以在那里使用 return
但不知何故我不明白该怎么做。
我不确定是否有必要重构它。但只是为了给你选择:
您可以这样做(或之前构建哈希)
paginate(page: page, per_page: per_page).where(user.admin? ? {} : {author: author_id})
或将默认范围添加到您的 post
我会写:
def self.find_posts(page, per_page, author_id, user)
posts = user.admin? ? Post.all : Post.where(author: author_id)
posts.paginate(page: page, per_page: per_page)
end