技術関連 - Rails
seed_dump というgemを使うとサクッと実現出来ます。 このgemは簡単にいうと、 DBのデータをseedファイルに超楽チンに書き出せるgem です。 本番環境の商品データを、 定期バッチでスクレイピングして貯めていこうかと思っていました。 が、スクレイピングは…
postgreSQL(herokuのデフォルトのDBはpostgreSQL) では、モデルのserializeメソッドが使えない ようです。 ActiveRecord::AttributeMethods::Serialization::ColumnNotSerializableError (Column `tags` of type ActiveRecord::ConnectionAdapters::PostgreS…
Railsの標準機能である attribute API を使います。 attribute :virtual_tags, type: Array virtual_tagsという属性 に 配列の値 を保持させることが出来るようになります。 もし、typeを指定しない場合は、設定した値のclassで、値が設定されます。
where句でテーブル名とカラム名両方を指定し、 文字列で条件指定すれば出来ました。 Model.joins(:join対象のテーブル名).where("join対象のテーブル名.join対象のテーブルにあるカラム名 >= ?", 日付) 例: ordersテーブルのorder_dateが、2020/01/20以降のU…
herokuではどうもassets/audios以下を読み込んでくれない。 そのため、Tempfile, Tempdirライブラリを使用し、 1. mp3ファイルをTempfileとして生成し、Tempdirに仮置き 2. S3にアップロード 3. 1のファイルを削除する という手順を取ることで対応出来ました…
enum型でカラム名を定義すると、scopeが自動生成されます。 enumで定義したカラム名はそのまま、 モデル.enumで定義したカラム名 のようにする事ができます。 なので、 enumで定義したカラム名のscopeは自分で定義する必要はありませんし、 当然、whereを使…
File.mtime() でファイルの作成日時が取れるので、それをsort_byで並び替える。
sanitize gemを使います。 Sanitize.cleanメソッドに、オプションを渡します。 第二引数elementsの引数に、残したいタグを配列で指定することで、指定したタグ以外を削除出来ます。 # @hoge.textにはhtml文字列が入っているとします。 Sanitize.clean(@hoge.…
Railsで、 クエリパラメータを配列として渡したい場合は、 to_queryメソッドを使います。 `値.to_query(キー)` という風に使うと、 うまくクエリパラメータの形に整形してくれます。
シンボル オブジェクトidが一意に振られる。一つのシンボルは常に同一のオブジェクト。なのでメモリの節約になる。 変更が加えられない(イミュータブル) class Symbol (Ruby 3.0.0 リファレンスマニュアル) ・文字列 オブジェクトidが毎回変わる。別のオブジ…
調査していくと、srcの値に + が含まれているとエラーになることがわかった。 DateTimeにはタイムゾーンの +09:00 に +が含まれているのでエラーになる。 Dateには + が含まれていないので実行出来る。
1. 文章を読み飛ばしていないか? 2. 応用問題を解いたままの状態で進めていないか? 3. サーバーを再起動 4. コマンド実行しているディレクトリ、gitのブランチは正しいか? 5. ifのend抜け、インデントの位置 6. その日は諦めて潔く寝る 7. こまめにコミット…
ApplicationController.helpers.strip_tags(対象のhtml) を使えばOKです。
head :no_content でOK。 head: :no_content ではないです! headにシンボルいりません。 つけてしまってて、ハマりました。。
以下のコードを、application.html.erbのbodyタグの一番始め に設定すればOK。 " align="center"> bootstrapを導入していれば、alert-〇〇〇〇の部分に動的にcssが当たります。 bootstrapでcssを適用出来るflashの種類は、以下の4つ。 flash[:info] flash[:s…
hidden_field_tag を使うことで対応出来た。 第一引数: name属性 第二引数: 送信したい値 例. = form_with url: '/articles' do |f| = hidden_field_tag 'hoge_item[]', 1 = f.submit '送信' これは下記のように送信されます。 #=> "hoge_item"=>["1"]
application.rbの編集は、サーバーを再起動しないと反映されない。 Rails5から、本番環境でのautoloadが無効化されている。 Rails5のproduction環境でlib/配下のクラス読込みがNameErrorになるのはautoloadが無効化されたからだった - Qiita 若干厄介なのは…
herokuにRailsアプリをデプロイし、facebookシェアボタンを設置。 が、シェア時のogp画像が上手く表示されない。 色々調べていると、 Dynoに書き込まれたファイルはアイドル状態、または再起動したときに消えてしまいます。永続化したいファイルはS3などのフ…
1. 修正用のマイグレーションファイルを作る。 2. 1で作成したマイグレーションファイルを以下のように修正。 3. db:migrateする これでデフォルト値が設定できました。 up,downメソッドではなく、 changeメソッドを使うと、 db:migrate:redoした時にエ…
やり方はhtml内に :readonly => true を追加するだけ。 例 true %>
paranoiaのREAD.MEで、 paranoiaは非推奨になった旨が追記されています。 今後は 「discard」 を使うようにしましょう。 1、paranoiaというgemをインストール 2、モデルにdeleted_atというカラムを追加する 3、active_record.rbにacts_as_paranoiaと追記…
db:migrate:resetは、dbを全て削除し、もう一度migrateを実行するコマンド。 resetすると、db:seedで作成していたユーザーも削除される。 テーブルにカラム追加(Add~テーブル部分はパスカルケース、頭文字だけ大文字で入力) $ rails g migration AddColumnT…
既存のフォームに、新たに「所属」入力フォームを追加し、値を送信しようとしたがバリデーションがかかって値を渡せず詰まったのでメモ。 質問をすると、 「ストロングパラメータってオチじゃないですか? rails tutorial 第7章 7.3.2を見ると何か発見がある…