2017-04-03 93 views
0

在我的Rails应用程序用户能够编写和发布帖子。 在主页上,我想特写几个帖子。选择内容到功能

这是我用什么来选择此刻帖子:

posts_controller.rb

favorite_post_ids = [8,2,5] 
@favorite_posts = Post.find(favorite_post_ids) 
new_post_ids = [1,2,5] 
@new_posts = Post.find(new_post_ids) 

,然后在视图我遍历他们显示的职位。

但是,一旦一个帖子被删除,控制器无法再找到它,我得到的是说

Couldn't find all Posts with 'id': (1, 2, 5) (found 2 results, but was looking for 3) 

什么是更好的方式来做到这一点的错误?我正在考虑单个表格,一个用于new_posts,另一个用于favorite_posts,然后与帖子建立关系。在表中,我将有post_id引用。

UPDATE:

我加了一堆额外列的不同类型的特色内容全部用布尔值默认为false的职位。如果我想要他们的特色,我将分配给你。

+0

你能否告诉我们,什么是最喜欢的帖子的标准是什么? –

回答

2

你会如何解决这个问题?

让您的文章标记为favorite布尔类型。然后,你会选择它们是这样的:

@favorite_posts = Post.where(favorite: true).limit(3) 

而对于新的职位,您可以使用时间戳

@new_posts = Post.order(created_at: :desc).limit(3) 

看,没有硬编码!

+0

嗨,谢谢你。但我正在专门寻找通过ID选择他们。因为如果我创建一个收藏夹列来接受布尔值,我也必须为其他类型的特色内容创建列。例如,如果我在posts表中有“精选”和“推荐”列,只需要选择几个,我担心大多数帖子会将这些列设置为false。 – Joshua

+0

@Joshua:“我担心的是,大多数帖子会将这些列设置为false” - 这本身并不是问题。你真正的担忧是什么? –

+0

@Joshua:将元数据存储在其他表格中(“它是否具有特色?是否用于此新广告系列?”等)也是一种可行的替代方案。但它会产生自己的代价(更复杂的代码,更复杂的数据库结构,更复杂的查询)。优点和缺点需要评估。 –

0

我不鼓励硬编码。但还是如果这是你的要求,尽量

favorite_post_ids = [8,2,5] 
@favorite_posts = Post.where(:id => favorite_post_ids) 
new_post_ids = [1,2,5] 
@new_posts = Post.where(:id => new_post_ids)