最近mongoDBにはまりすぎてやばいです。
mongoDBスバラシキ!
いろんなサイトでmongomapperでcarrierwaveを組み合わせているのですが、
なかなかmongoidでcarrierwaveでマッチするサイトが見つからなかったので、メモ。
rails new hogeしたあとから。
あとごめんなさい、routes.rbの設定とpublic/index.htmlの削除は自分でお願いしますw
gemfile sqlite3の下あたりにでも。
gem 'mongoid'
gem 'bson_ext'
gem 'carrierwave'
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'rmagick'
$ bundle install
$ rails g mongoid:config
$ rails g scaffold article name:string content:text
invoke mongodbされていることを確認
$ mongod
$ rails s
mongodbがちゃんと動いていることを起動確認
次にcarrierwaveとドッキングさせます。
ActiveRecordのようにrake db:migrateは不要のため、カラムを追加したいときは簡単です。
$ rails g uploader image
models/articles.rb
class Article
include Mongoid::Document
field :name
field :content
field :image #追加、mongodbはデフォルトでtype => stringがつくので、typeは書かなくて大丈夫です
mount_uploader :image, ImageUploader #追加
validates :name, presence: true #お好みで
end
===================================
views/articles/_form.html.erbに以下を追加
<%= f.label :image %>
<%= f.file_field :image %>
===================================
views/articles/show.html.erbにimageを表示させるために以下を追加
Image:
<%= image_tag @article.image_url.to_s %>
===================================
views/articles/index.html.erbにもimageを表示させるために以下を追加
<%= image_tag article.image_url(:thumb).to_s%>
===================================
uploaders/image_uploader.rbに
include CarrierWave::RMagick 6行目をコメントイン
39行目
version :thumb do
process :resize_to_limit => [200, 200] #resize_to_limitに書き換え
end
もしこれでkey? nill なんちゃらとかでるようだったら、
一度rails sを再起動させてやると戻るかもしれません
ActiveRecordを使う場合よりも圧倒的に簡単に書けるようになったかと思います。
これでrake dbのかけ忘れは確実になくなったとw