列のある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
(互いに正反対の意味を持つ 2 つの列を使用することが悪い習慣であるかどうかはわかりませんが、「Post」モデルのコールバックがより明確に読み取れるようになります。間違っている場合は修正してください)。
ここで、ドラフトとドラフト以外の (公開された) 投稿を取得する方法を見つけたいと考えています。今のところ、公開日で並べ替える方法しか知りません。draft == true
しかし、またはで投稿を除外する方法がわかりませんpublished == false
。
posts_controller.rb:
def index
@posts = Posts.order('published_at DESC')
end
これを行う最善の方法は何ですか?
(ちなみに、使うべきorder
かorder_by?
、違いは何ですか?)