我是应该建立一个自定义的友谊模型,还是应该执行一个错误的模型?如果是阿米萨德,有什么问题吗?比如那些不一定有效的功能?
这取决于您想要实现的功能。
坦率地说,像Amistad这样的宝石通常不会为你节省太多时间,特别是当你需要扩展宝石时。如果是我,我会列出一个好友功能的愿望清单,看看Amistad能否提供一个坚实的基础(比如,为我完成90%的工作)。在大多数情况下,您最好使用自己的解决方案。这样,你就永远不会被一个不能带来太多东西的Gem所限制。我是第一次在这里使用Amistad,我觉得它很可爱,它是如此的小…"不要重新发明轮子"的本能也响起了,为什么要从头开始?我不想检查我的整个实现,如果一个人已经这样做了!:P这也为贡献等敞开了大门。
所以,我想扩展Amistad的功能,更准确地说,在邀请时创建邮件boxer通知,我遵循了我在Rails中发现的空对象模式(Null Object pattern)中用于关联的一个小模式
基本上:
class Profile < ActiveRecord::Base
include Amistad::FriendModel
module AmistadExtension
def invite(user)
p "works!"
super
end
include AmistadExtension
end
现在在rails c
:
> p = Profile.first
> p.invite p # this returns false because it's sending friend request to itself
"works!"
false
我不知道这是否能解决我需要的所有问题,但它确实节省了我的时间。