问题标签 [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.

0 投票
1 回答
272 浏览

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

仅供参考,邀请方法如下:(代码here

我不明白为什么活动记录自动时间戳在这种情况下不起作用。

注意:如果我在控制台中手动创建好友关系,则会设置时间戳:

即使我在控制台中设置了时间戳:所以它一定是上下文问题......

但是,当我调用@user.invite another_user应用程序时,它仍然不会更新时间戳......


其次,在 rails 控制台中,如果我输入Friendships.all, Friendship.all, Amistad::Friendships.all... 我会得到:

NameError:未初始化的常量友谊


我该如何解决这两个问题。有什么建议么 ?

0 投票
2 回答
1190 浏览

ruby-on-rails - 如何创建朋友?

我似乎无法让 Amistad 的友谊正常工作。我收到以下错误:

我也在使用设计和康康。我按照 wiki 页面上的 gem 设置并按照相关文章中的描述创建了我的控制器。

我以以下方式循环遍历我的用户,检查用户的当前状态并提供适当的操作。

认为在我的模式中查看友谊表的样子会很有用:

我理解错误只是无法弄清楚这应该如何改变。我认为我的问题是我正在传递一个朋友 ID,它正在期待一个友谊 ID。我对这个解决方案的唯一问题是我能找到的每个示例或帖子都建议传递 user_id,就像上面的这篇帖子一样,回答者指出 gem 开发人员提供了他回答的代码。

我觉得我的更新方法需要的是替换:

有了这个:

编辑 我可以成功请求朋友,我只是不能接受或拒绝朋友。我是用户列表,单击“添加朋友”链接会在友谊数据库中正确创建记录。如果我以最近请求的用户身份登录并尝试接受该请求,则会出现上述错误。如果我尝试拒绝请求,也会发生这种情况。

您要求查看的朋友方法与 amistad gem 一起提供,这里是该方法的代码。至于我的 Ruby 日志,显示错误的部分很长,所以我将它包含在这个 gist中。

0 投票
1 回答
43 浏览

ruby-on-rails - Rails Not In - Amistad Gem - 不选择阻止您或您已阻止的人

使用 amistad gem 我可以得到 People.all

查看文档后,它看起来像

返回阻止您的人和您阻止的人

https://github.com/raw1z/amistad/wiki

是否可以返回除您已阻止的人和已阻止您的人之外的所有人的查询?我花了很多时间试图弄清楚这一点无济于事。你在哪里,和

使用普通的 SQL 可以做一个 not in 查询,但我无法用 rails 解决这个问题。

我试过的

错误

0 投票
0 回答
28 浏览

ruby-on-rails - trouble returning profiles that have blocked you using amistad gem

I am having trouble returning all profiles that have blocked you with the amistad gem.

I am able to find profiles you have blocked.

And the profiles other individual profiles have blocked.

But the issue is I would need to iterate through every profile and look at their blockades_by to see if the logged in user is there, then remove them from the final query. This is way too crazy. There needs to be a simpler way?

0 投票
1 回答
201 浏览

ruby-on-rails - Rails 4:Amistad gem 打破了多态关联

我有一个使用Amistad gem的用户模型。到目前为止一切正常。在我的应用程序中,我还有一个members只有 2 个字段的表:user_idgroup_id

由于我需要使用此members表来存储社区成员,因此我决定将其设为多态表:

为了继续,我提出了一个memberable关注我的团体和社区的问题:

到目前为止一切顺利,所有协会都运作良好。但是,由于我的members表将包含Groupsand Communities,我需要能够检索我所属的所有组有用户。所以在我的用户模型中,我做了:

此代码本身工作正常,当我调用user.groups它时会生成以下查询:

但正如我在标题和开头提到的那样,我使用的是Amistad gem,所以我将它包括在内:

这以某种方式破坏了我的多态关联,我不知道为什么。调用时user.groups,Rails 为我生成以下查询(不好的一个):

注意最后一行:AND groups.memberable_type = 'Group'。我试图查看宝石内部,但没有找到任何冲突的原因。

有什么想法吗?

编辑
我分叉了宝石并试图破解。看来gem正在使用squeel这正是这个问题的根源。

编辑 2
Yeeaaahhh,我找到了解决方法。在我的Member模型中,我曾经有:

为了解决与 的冲突Squeel,我必须通过以下方式更改它:

0 投票
2 回答
103 浏览

ruby-on-rails - Ruby on Rails 路由错误

我正在使用 Amistad 来实现友谊模型。我在friendships_controller: index, request_friend, approve_friend, remove_friend,中有五个动作block_friend

我不确定如何在路由文件中定义路由,我尝试使用resources :friendships但无法从用户个人资料发出好友请求。

以下是文件:

路线.rb:

友谊控制器.rb:

我希望用户 A 能够向用户 B 发送好友请求,而用户 B 可以接受、删除或忽略它。

这是我的 show.html.erb

这是我手动执行友谊时在控制台中进行的过程 - 即 user1.invite user2 - 它正在工作并且正在对友谊表进行更改 - 我使用 sqlitebrowser 进行验证

这是我在 show.html.erb.Ive 中按 link_to 时发生的情况。我只包含与友谊模型相关的控制台部分

我不知道为什么当我按下按钮时没有插入值。但是当我通过控制台手动执行时,它们被插入。