質問するログイン新規登録

Q&A

1回答

1165閲覧

ActiveRecord で文字列を値として渡したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2019/03/07 11:48

0

0

https://teratail.com/questions/178238
ここで MySQL の geometry 型を ActiveRecord で扱う方法を質問したのですが解決方法がわからず

migration だけは通るので

self.location = "POINT(#{self.lng}, #{self.lat})"
self.location = "GeomFromText( 'POINT(#{self.lng} #{self.lat})' )"

のような感じで無理やりわたしてみたのですが

Mysql2::Error: Cannot get geometry object from data you send to the GEOMETRY field: INSERT INTO
:
VALUES (... 'POINT(139.7, 35.7)', ...

VALUES (... 'GeomFromText( \'POINT(139.7 35.7)\' )'...

となってエスケープされた文字列として渡されてしまいうまくいきません

VALUES (... POINT(139.7, 35.7), ...
VALUES (... GeomFromText( 'POINT(139.7 35.7)' ), ...

という感じでエスケープしない値としてSQLにわたす方法はないでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

gouf

2019/03/08 20:19

こちらの gem は利用できそうですか? : [Rails / Active RecordでMySQLのgeometry型をサポートするライブラリを書いた - so what](https://so-wh.at/entry/2017/08/11/134530)
退会済みユーザー

退会済みユーザー

2019/03/11 04:10

回答有り難うございます https://teratail.com/questions/178238 のほうがコメント内容にふさわしいのでそちらに追記したのですが そのブログで扱っている armg というジェムが現在の Rails のバージョンで使えないのです
guest

回答1

0

最後の手段。
生のSQL文を作って、 ActiveRecord::Base.connection.execute(sql)

投稿2019/07/03 04:19

winterboum

総合スコア23692

退会済みユーザー

退会済みユーザー

2019/07/03 08:54

1カラムだけ別のSQLにしてしまうと複数回発行されてしまうので save をオーバーライドして全 SQL を自分で組み立てるしかないのでしょうか…
winterboum

2019/07/03 11:03

save自体のoverrideは辛いですね。 案1 諦めて2回実行 案2 geometryからむときは全項目を含むinsert文を作る
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問