Rails では STI がフレームワークとしてサポートされています。 そのため type
というカラムがあった場合、 Rails が STI で使用する type
と競合して、思うようにデータを更新できないことがあります。
「Rails」タグアーカイブ
Rails: 基本的なオプションタグの生成方法 options_for_select
オプションタグを options_for_select
で生成する方法についてまとめました。
環境
- Ruby 2.2.3
- Rails 4.2.5
Rails: クラス名が ActiveRecord::AttributeMethods 内のモジュールと同じ場合
Rails で作成したクラスの名前が “Read” だったとき、 そして その Read クラス を モデルクラス の中で使用したとき、 次のエラーが出ました。
undefined method `where’ for ActiveRecord::AttributeMethods::Read:Module
Read という クラス ではなく、 Rails が用意している ActiveRecord::AttributeMethods::Read モジュール だと判断されています。 次のようにすると、 作った Read クラス を使用できます。
1 |
"Read".constantize |
Rails で nl2br を実現する
PHP にあった nl2br
を Rails で実現する方法です。
環境
(Rails が大きく変わらない限り) いろんなバージョンで使えると思います。
- Rails 4.2.5
- Ruby 2.0.0
Rails Sprockets::Rails::Helper::AssetFilteredError
Rails では application.js が require_tree
で assets/javascript
内の javascript ファイル をすべて読み込むようになっています。 その required_tree
を削除するとエラーになるのですが、 ここではそのエラーを回避する方法を書き留めておきます。
環境
sprockets を導入していれば 起きるエラーです。 私もいくつかの環境で経験していますが、 今回使っていたのは次の環境でした。
- Ruby 2.0.0
- Rails 4.2.5
エラー内容
Sprockets::Rails::Helper::AssetFilteredError – Asset filtered out and will not be served: addRails.application.config.assets.precompile += %w( xxxx.js )
toconfig/initializers/assets.rb
and restart your server:
解決法
ほかにも解決法はありますが、 次のようにして、 とにかくすべてをコンパイル対象にします。 余計なものまでできてしまう可能性も否定できませんが。
1 |
Rails.application.config.assets.precompile += %w( * ) |