我有一个Post
带有draft
柱子的模型。如果用户单击视图中的复选框,则帖子被选中draft
架构.rb:
create_table "posts", :force => true do |t|
t.string "title"
t.string "content"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "comments_count", :default => 0, :null => false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.boolean "published", :default => false
t.datetime "published_at"
t.boolean "draft", :default => false
end
换句话说,它不被视为已发布:
post.rb:
def publish_post
unless self.draft == true
self.published = true
self.published_at = Time.now
end
end
(我不确定让两列的含义完全相反是否是一种不好的做法,但它使“发布”模型中的回调更清晰。如果我错了,请纠正我)。
现在我想找到一种获取草稿和非草稿(已发布)帖子的方法。现在,我只知道如何按发布日期对它们进行排序。但我不知道如何用draft == true
or过滤掉帖子published == false
。
post_controller.rb:
def index
@posts = Posts.order('published_at DESC')
end
这样做的最佳方法是什么?
(顺便问一下,我应该使用order
还是order_by?
有什么区别?)