問題タブ [amistad]
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.
ruby-on-rails-3 - amistad のカスタマイズ: タイムスタンプの追加
アプリケーションでフレンドシップを管理するために gem amistadを使用しています。
通知を表示できるように、関係がいつ発生するかを追跡したいと思います。
まず、リレーションシップ モデルにタイムスタンプを追加して、 : などのクエリを実行できるようにしますretrieve all Friendships where receiving user is current user, and where updated_at is greater than the last time the current_user checked his notifications
。これらの結果を数えることで、次のように言うことができます: 3 つの受信連絡要求とそれらを表示します。
だから私は移行を行いました:
rake db:migrate
は正しく移行updated_at
されますが、gem を介してレコードが作成または更新されると、 は自動的には移行されません (例: @user.invite another_user
)。
参考までに、招待方法は次のとおりです: (コードはこちら)
この場合、アクティブ レコードの自動タイムスタンプが機能しない理由がわかりません。
注: コンソールでフレンドシップを手動で作成すると、タイムスタンプが設定されます。
コンソールでそれを行っても、タイムスタンプが設定されています:したがって、コンテキストの問題である必要があります...
それでも、アプリケーションを呼び出す@user.invite another_user
と、タイムスタンプが更新されません...
次に、Rails コンソールでFriendships.all
, Friendship.all
, Amistad::Friendships.all
... と入力すると、次のようになります。
NameError: 初期化されていない定数 Friendship
この 2 つの問題を解決するにはどうすればよいでしょうか。助言がありますか ?
ruby-on-rails - フレンドを作成するにはどうすればよいですか?
アミスタッドの友情が正しく機能していないようです。次のエラーが表示されます。
私もdeviseとcancanを使っています。wiki ページの gem セットアップに従い、この関連記事で説明されているようにコントローラーを作成しました。
次の方法でユーザーをループして、ユーザーの現在のステータスを確認し、適切なアクションを提供します。
私のスキーマで友情テーブルがどのように見えるかを確認すると便利だと思いました:
エラーがこれがどのように変化するかを理解できないことを理解しています。私の問題は、フレンド ID を渡しており、フレンド ID を期待していることだと思います。このソリューションに関する私の唯一の問題は、私が見つけることができるすべての例または投稿が user_id を渡すことを提案していることです。
update メソッドで必要だと思うのは、次のものを置き換えることです。
これとともに:
編集 友達をリクエストすることはできますが、友達を承認または拒否することはできません。ユーザーのリストで、[友達を追加] リンクをクリックすると、友情データベースにレコードが正しく作成されます。最近リクエストしたユーザーとしてログインし、リクエストを受け入れようとすると、上記のエラーが発生します。これは、リクエストを拒否しようとした場合にも発生します。
あなたが見るように頼んだ友人のメソッドは、amistad gem に付属しています。これがそのメソッドのコードです。私の Ruby ログでは、エラーを表示するセクションが非常に長いので、この gistに含めました。
ruby-on-rails - Rails Not In - Amistad Gem - あなたをブロックした人、またはあなたがブロックした人を選択しない
amistad gem を使用して People.all を取得できます
ドキュメントを確認した後、次のようになります
あなたをブロックした人とあなたがブロックした人を返します
https://github.com/raw1z/amistad/wiki
あなたがブロックした人とあなたをブロックした人を除くすべての人のクエリを返すことは可能ですか? 私はこれを理解するのに多くの時間を費やしましたが、役に立ちませんでした。あなたがいる場所、そして
通常のSQLではnot inクエリを実行できますが、レールではこれを理解できません。
私が試したこと
エラー
ruby-on-rails - Rails 4 : Amistad gem がポリモーフィックな関連付けを破る
Amistad gemを使用しているユーザー モデルがあります。これまでのところ、すべてが正常に機能していました。私のアプリには、 と のmembers
2 つのフィールドしかないテーブルもuser_id
ありgroup_id
ます。
このmembers
テーブルを使用してコミュニティ メンバーも格納する必要があるため、これをポリモーフィック テーブルにすることにしました。
続行するには、memberable
自分のグループとコミュニティに関連付ける懸念事項を作成しました:
これまでのところ、すべての協会がうまく機能しています。ただし、私のmembers
テーブルにはGroups
とが含まれCommunities
ているため、所属しているすべてのグループを取得できる必要があります。したがって、私のユーザーモデルでは、次のことを行いました。
このコード自体は正常に動作し、呼び出すuser.groups
と次のクエリが生成されます。
しかし、最初にタイトルと上記で述べたように、私はAmistad gemを使用しているので、それを含めました:
これは、どういうわけか私のポリモーフィックな関連付けを壊しますが、その理由はわかりません。を呼び出すとuser.groups
、Rails は次のクエリ (BAD ONE) を生成します。
最後の行に注意してください: AND groups.memberable_type = 'Group'
. 競合が発生した理由を見つけることなく、宝石の内部を調べようとしました。
アイデアはありますか?
編集
私は宝石をフォークし、ハックしようとしました。gem が使用しているように見えるのは、squeel
まさにこの問題の原因です。
EDIT 2
ええええええ、私は修正を見つけました。Member
私のモデル内では、以前は次のものがありました。
との競合を修正するために、次のようSqueel
に変更する必要がありました。