Rails 请教一个 Rails Engine 的验证设计方法

wuwx · 2013年05月01日 · 最后由 losingle 回复于 2013年05月14日 · 2280 次阅读

比如有一个 Rails 项目,名为 Weibo 吧(随便叫的)想发 weibo 必定是要登陆的,所以在 Weibo 这个项目里用了 Devise 用作用户认证啥的。

然后写了一个名为 Pinglun 的 Engine,假设是用来看某个 Weibo 评论以及增加评论用的吧:)

想发表一个评论肯定也是要登陆的,开发的时候,在 PInglun 的控制器里使用 before_filter :authenticate_user! 是没有问题的,他会使用主项目 Weibo 的认证。

可是假如是在 Engine 内部进行 rake test 的话,这个时候 :authenticate_user! 就找不到,出问题了……

想问问这种带验证的 Engine 是应该自己验证还是让调用自己的项目验证? 如果是让调用自己的项目去做验证的话,这个测试又应该如何写比较好呢?

"可是假如是在 Engine 内部进行 rake test 的话,这个时候 :authenticate_user! 就找不到,出问题了……" 》》》》报错能具体点不?

任何一个 gem、engine 都应该是自维护的而不依赖它的属主项目,测试也一样。

不太好判断, 初步估计是 dependency 的问题 你的 Pinglun 的 Engine 应该要 dependency 了你的主项目的。

你应该设计一个基础验证,包含在你的 core 里面,一般不要涉及第三方的认证 Gem,然后再通过 engine 去扩展你的认证,这时候再是用第三方的 Gem 比较合适。 因为你加一个 Rails Engine 的时候,基本都会要用到你的认证

需要 登录 后方可回复, 如果你还没有账号请 注册新账号