問題タブ [phoenix-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elixir - ポリモーフィック アソシエーションは Ecto とどのように連携しますか?
https://github.com/elixir-lang/ecto/issues/389とそこからリンクされている関連する問題を読んでみると、Ecto はポリモーフィック アソシエーションをサポートしているようです。
Task モデルと Event モデルに Comment モデルの関連付けが必要だとします。Ecto とカスタム ソースの関連付けに関する私の理解が正しければ、4 つのテーブルと 3 つのモデルが必要になります。
テーブル
- タスク
- イベント
- タスク_コメント
- イベントコメント
モデル
- 仕事
- イベント
- コメント
タスクおよびイベント モデルには、以下のようにカスタム ソースとの has_many 関連付けがあります。
私が理解していないのは、コメントモデルがどのように見えるべきかということです?
Comment モデルは 2 つのテーブルをどのように処理しますか? そして、異なるモデルへの属しへの関連付けをどのように処理しますか?
elixir - Elixir ミックスインのやり方
認証ログイン用のミックスインを作成しようとしているので、ログインできるはずのモデルに適用できます。Ruby の has_secure_password によく似ています。
use
私の知る限り、これはモジュールを必要とするステートメントを使用して行われ、__using__
マクロを呼び出します。だから私はこのように私のミックスインを実装しました。
次に、「ユーザー」モデルで使用を呼び出します。
私のコントローラーでは、メソッドを使用しようとしています。
しかし、コードをヒットすると、認証関数を呼び出す行で引数エラーが発生します。
私のマクロスキルはかなり弱いです。何が間違っていますか? :)
elixir - フェニックスフレームワークの日付セレクターのデフォルト値を現在の日付に設定します
私が開発しているアプリには、主に現在の日付を値として使用する日付セレクターがあります (または数日後の日付)。ユーザーの作業を軽減するために、今日の日付をデフォルト値として設定したいと考えています。
年は :
date_select f, :date, class="form_control", year: [options: @current_year, @current_year+1]
で簡単に設定できますが、月と日に同様のことを行うことはできませんでした。
date_select f, :date, class="form_control", year: [options: @current_year, @current_year+1], month: [default: 2]
コードを、
date_select f, :date, class="form_control", year: [options: @current_year, @current_year+1], month: [default: "2"]
、
に変更しようとしましたdate_select f, :date, class="form_control", year: [options: @current_year, @current_year+1], month: [default: "02"]
が、どれも機能しませんでした。と交換default
してvalue
も変わりませんでした。私はどんな間違いをしていますか?
前もって感謝します
elixir - Phoenix: IEx コンソールからのブロードキャスト
ここにあるような小さなチャット アプリを作成しました: https://github.com/chrismccord/phoenix_chat_example/blob/master/web/channels/room_channel.ex
また、トピック内のすべてのユーザーにメッセージをブロードキャストする方法がわかりません。上記のアプリケーション (私が使用しているように v0.13 に更新されていません) では、どうすればよいでしょうか? 以下は私が運がないことを試したものです:
それらのどれも機能しません...それらのいくつかは例外をスローします:(
cowboy - 別のポートでカウボーイ サーバーを使用して Phoenix アプリを起動する
のようなコマンドを使用して、コンソールから異なるポートでいくつかの Phoenix アプリをローカルで起動することは可能mix phoenix.server --port=4001
ですか? もちろん、これは機能しませんが、同様の方法があるかもしれません。
elixir - タスクを「際限なく」繰り返すには、どの OTP 動作を使用すればよいですか?
Phoenixアプリケーションの隣で同じ一連の操作を何度も繰り返し実行したい(もちろん、ワーカーで何かが壊れた場合にWebアプリ全体をクラッシュさせることなく)、GenServer、Elixirのタスク、エージェント、またはこれまで考えたことのないまったく別のもの。
Phoenix アプリを起動すると、ワーカーも起動する必要があります。これは、定期的にシリアル接続の値を取得し、Phoenix チャネルを介してそれらをブロードキャストし、@save_interval
到達するまでそれらを収集してから、中央値を計算し、別のチャネルを介してその中央値をブロードキャストし、 InfluxDB に書き込みます。今、私は次のようなもの(一種の作業)を持っています:
私はすべての OTP のことを理解し始めたばかりで、あなたの誰かが私がここで正しい方向につまずくのを手伝ってくれることを願っています.
elixir - Phoenix/Ecto でのスコープと関連付けの混合
Rails では、次の設定がある場合:
次に、次のようなことができます。
指定された の承認されたすべてのコメントをすばやく取得しますPost
。
どうすれば Ecto で同様のことを行うことができますか?
私はプリロードされたものpost
を持っています:comments
approved
のスコープをどこから始めればよいかさえわかりませんMyApp.Comment
。
elixir - Phoenix - 複数のレンダリングを備えたコントローラー
リソースを処理するために「ブラウザ」と「API」の両方のリクエストを処理できる Elixir + Phoenix を使用してアプリを作成しようとしています。
そのようなことをしなくてもそれを行うことは可能ですか:
これは、ブラウザパイプラインで HTML をレンダリングし、 APIパイプラインで JSONをレンダリングすることを除いて、同じ動作をする可能性のある 2 つのコントローラーを作成する必要があることを意味します。
おそらくRailsのようなものだと思っていましたrespond_to do |format| ...
elixir - 「すでにトランザクション内にいるため、テスト トランザクションを開始できません」
私はこのチュートリアルに従いましたが、私の簡単なテストは常にこのエラーで失敗します
コードはとてもシンプルです
エラー全体をグーグルで検索しましたcannot begin test transaction because we are already inside one
。しかし、修正が見つかりませんでした。
PS。Postgresqlを使用しています