技術関連 - Rails
最初に結論 json型なので、 参照時のキーは「文字列キー」にする必要がある。 シンボルじゃダメ。 それだけのことでした。 起こったこと 下記のようなjson型カラムの中にあるデータを、 active_adminのフォームの初期値として表示させたい。 t.json "options…
where句でテーブル名とカラム名両方を指定し、 文字列で条件指定すれば出来ました。 Model.joins(:join対象のテーブル名).where("join対象のテーブル名.join対象のテーブルにあるカラム名 >= ?", 日付) 例: ordersテーブルのorder_dateが、2020/01/20以降のU…
href\s=\s"([^"]*)" という正規表現を使うことで実現可能です。 このstack over flowの回答がドンピシャでした。 > You should be able to use a regular expression like this: > href\s*=\s*"([^"]*)" See this Rubular example of that expression. > The…
こんにちは、mah(@RailsRubyMah6h)です。 今回は、 RSpecでBase64エンコードされた画像ファイルをテストする です。 1、 テストに使う画像ファイルを、Base64でエンコードしたバイナリ文字列に変換する (下記のようなサイトを使うとラクです) https://lab.sy…
ActiveAdminで管理画面を作っていて、 「非エンジニアのサポートチームの人が使うから、チェックボックスにはダイアログかアラート出したいな...」 と思い、 「chack_boxをON、OFFしたらdialogかalertを出すオプション」 的なものを探していたのですが、 che…
config.clear_action_items! の1行を追加すればOKです。 ActiveAdmin.register Item do # これを追加 config.clear_action_items! end これで、 ヘッダータイトルの作成ボタンが非表示になりました。 f:id:mah666hhh:20201107092354p:plain clear_action_ite…
エラー文「(pry) output error: #」でググるとIssueがヒット。 どうやらRailsから「marshal_dumpメソッド」が削除され、 その影響でawesome_printからも関係するコードが削除された模様。 Update CHANGELOG Remove usage of marshal_dump since this was rem…
ターミナルで $ gem list xxx のようにするのではなく、 メソッドで特定のgemがインストール済かチェックしたい。 ターミナルと同様にgemコマンドを使えばOKです。 gem '指定のgem名' で調べられます。 戻り値は、 引数のgemがインストール済ならtrueを返す …
Wheneverのcron設定ファイルやRailway側の実行コマンドを変えて検証していましたが、 なかなか終わらないので発想を変えます。 rakeタスクを実行するエンドポイントを作り、 そこにNew Relicから一定時間毎にpingを送るようにすることで、 実質Herokuスケジ…
Railwayデプロイ時に発生。 #18 1.183 [1/5] Validating package.json... #18 1.188 error technews@0.1.0: The engine "node" is incompatible with this module. Expected version "v14.0.0". Got "16.17.0" #18 1.201 info Visit https://yarnpkg.com/e…
最大値が 4 だからなのかと思いましたが、 --jobs で指定できるジョブ数の最大値についての記述はドキュメント上にありませんでした。 これなら動的にジョブ数を変えられるのでは? と思い調べていると、 「指定可能なジョブ数はCPU のコア数と使用可能なメ…
Ping failed for Bing: # で調べているとIssueやPRが出ていました。 2021年の12月にBingのping送信が廃止された?というような情報もありました。 これは現在のBingのping送信先URLを確認した方が早そうなので、 Bingウェブマスターツールを見にいきました。…
やり方としては、 cache オプションと expires_in オプションを指定するだけなのですが、 生成されるキャッシュのキーについて補足しておきます。 結論、 下記のような感じになります。
LineNotifyの準備 1. LineNotifyのアクセストークンを発行する 2. LineNotifyのAPIを扱うクラスを作成する 3. 1で指定したグループに「Line Notify」アカウントを招待しておく Herokuの準備 3. HerokuからのWebhook通知を受けるルーティングを追加する 4. デ…
元々アプリ用に取得していたGmailのメルアドを、 SendGridの「Single Sender Verification」で設定することで、 SendGridからメール送信できるようにしました。 1、 下記「Single Sender Verification」の、 「Create New Sender」ボタンをクリックして登録…
解決策 getの場合は、 第二引数にheaders: をキーとして、 指定したいヘッダのオプションを渡せばOK。 this.$axios.get(url, { headers: { "Content-Type": "application/json", "Accept": "application/json" }}) postの場合は、 第三引数にheaders: をキー…
解決策 ActiveAdmin::Views::Pages::Indexというクラスにある、 render_blank_slate というメソッドにモンキーパッチを当てます。 render_blank_slate www.rubydoc.info ja.ymlのキー (blank_slate、content、link) github.com やり方 1、 initializerで、モ…
son型のDBカラムを、 active_adminの管理画面フォームで表示させようとすると、 Unable to find input class JsonInput のエラー。 backtraceの一部 @input_class_finder.find(as) rescue Formtastic::InputClassFinder::NotFoundError raise Formtastic::Un…
ymlファイルの中でerbを使い、 動的に値を取得してrakeタスクの引数にしようとしていた。 が、 erbを使った部分が文字列のままで渡ってきて、 上手くいかなかった。 ymlファイル例は下記。 # test.yml.erb - id: age: 18 *** こういう値が欲しいが、 #=> [{ …
やり方 単純にダイアログの回数分、 accept_confirm をネストすればOK。 # 1回目のダイアログ page.accept_confirm do # 2回目のダイアログ page.accept_confirm do # ダイアログが全てOKなら実施したい何らかの処理 first('div[data-cell="del"]>div>form>b…
paranoiaのREAD.MEで、 paranoiaは非推奨になった旨が追記されています。 今後は 「discard」 を使うようにしましょう。 1、paranoiaというgemをインストール 2、モデルにdeleted_atというカラムを追加する 3、active_record.rbにacts_as_paranoiaと追記…
「allow_destroy: true」 を使わず、 f.inputのname属性に 「:_destroy」 を指定すればOKです。 例 form do |f| f.inputs 'Contract' do # 親モデル Contract end # 子モデル Option f.has_many :options, do |o| # allow_destroy: trueは不要 o.input :_des…
結論 collectionオプションを使います。 collectionの引数に、 scopeを渡してあげればOKです。 例 f.inputs for: [:plan, f.object.plan || Plan.new] do |p| p.input :name, as: :select, collection: Plan.all.map(&:name) # Planモデルの全nameをセレクト…
permit_paramsに、 子モデルの「名称」と「属性」を指定すればOKです。 例えば、 下記のようなモデルがあるとします。 # 親 class Plan attribute :name attribute :price has_many :contracts end # 子 class Contract belongs_to :plan end この場合、 Act…
## 【Rails6】gem toastr-railsを導入できない【ReferenceError: toastr is not defined】 出ているエラー ReferenceError: toastr is not defined 結論 下記の記事の手順通りにやると、toastr-railsを入れられました。 medium.com 起きていたこと 公式ドキ…
1. 自動広告はオンになっているか 2. Corsの設定をしたか 3. きちんとheadタグ内にコードを貼っているか 4. Adsenseサイト申請時のコードが残っていないか 5. コードを貼り付けてから1、2日間は経過しているか
Railsの標準機能である attribute API を使います。 attribute :virtual_tags, type: Array virtual_tagsという属性 に 配列の値 を保持させることが出来るようになります。 もし、typeを指定しない場合は、設定した値のclassで、値が設定されます。
herokuではどうもassets/audios以下を読み込んでくれない。 そのため、Tempfile, Tempdirライブラリを使用し、 1. mp3ファイルをTempfileとして生成し、Tempdirに仮置き 2. S3にアップロード 3. 1のファイルを削除する という手順を取ることで対応出来ました…
enum型でカラム名を定義すると、scopeが自動生成されます。 enumで定義したカラム名はそのまま、 モデル.enumで定義したカラム名 のようにする事ができます。 なので、 enumで定義したカラム名のscopeは自分で定義する必要はありませんし、 当然、whereを使…
File.mtime() でファイルの作成日時が取れるので、それをsort_byで並び替える。