RailsのDatabaseをMySQLにして、パスワードをdotenvで定数化する
RailsのDatabaseをsqlite3からMySQLにして、パスワードをdotenvで定数化する
gem追加
MySQLを使えるようにするためにmysql2
環境変数としてdotenv-rails
gemをそれぞれインストールします。
gem dotenv-rails
database.yml
アプリケーションのルートディレクトリに.env ファイルを追加
DATABASE_DEV_PASSWORD = 'database_password'
DATABASE_DEV_USER = 'database_user'
DATABASE_DEV_NAME = 'database_name'
DATABASE_DEV_HOST = 'database_host'
.envはcommit対象から除外すべきなので、 .gitignoreに.envを追加します。
以上がMySQLにDatabaseを変更し、Databaseのユーザー名、パスワードをdoenvで環境変数化する手順です
RailsでControllerの名称とは違うHelperをviewで使いたい
RailsでControllerの名称とは違うHelperをviewで使いたい
悩んで悩んで完全に沼にハマったのでメモ。
RailsのController内でHelperを呼びたい時はこんなカンジで、Controller名と違う名称のHelperを呼べますが、これではusers/show.slim でPostsHelperのメソッドを呼ぶことができません。
class UsersController < ApplicationControlelr
include UsersHelper
include PostsHelper
Controllerとは違う名称のHelperを呼ぶ時はこう
class UsersController < ApplicationControlelr
include UsersHelper
helper PostsHelper
で、それでもなぜかundefined local variable or methodがviewで発生するなあ、、なぜかなあーと頭かかえてたらrender partial で部分テンプレートの中身だったので呼べるはずがなかった。。locals にメソッド書いて渡してあげればよかっただけでした。。
まだRails始めたばっかりでしょうもないことでハマるなあ。。
複数ActiveRecord mergeメソッドでorder by
Post.joins(:entries).merge(Entry.order("entries.id DESC"))
mergeメソッドの中で orderの基準となるフィールド名を指定するんだけど、”id”はどちらのActiveRecord (Model)でもつかっている場合、どちらのActiveRecordのidか不明のため、その場合はテーブル名と合わせて指定する必要がある。(まあ、普通そうだよね。)