我正在使用rails 3.2和设计2.0,我对Rails很新.
我想实现以下目标:
我用Google搜索并搜索了StackOverflow很长一段时间,但对我来说似乎没什么问题(我是一个Java人,对不起:)现在我很困惑.出现了两个解决方案:
这是最常见的答案.只需创建默认设备用户并在会员 - >用户和客户 - >用户之间创建关系.我关注的是如何为每个模型实现自定义注册过程?我尝试了不同的东西,但一切都结束了!
这解决了自定义注册过程,对我来说似乎是正确的,但唯一的登录表单是一个阻止程序.我在SO(Devise - 从两个模型登录)上找到了答案,建议覆盖Devise :: Models :: Authenticatable.find_for_authentication(条件).这似乎很复杂(?),因为我是铁杆新手,我想知道这是否有效?
谢谢你的建议!
首先,我对Ruby很新,虽然我有很强的Java背景(没有帮助:).我创建了我的第一个Rails应用程序,我正在使用FactoryGirl.我遇到了一些奇怪的东西(对我来说),我无法弄清楚为什么它会像这样.
在工厂中使用sprintf(请参阅上一个测试)会引发以下错误:
Failures:
1) Test raises an ArgumentError
Failure/Error: sprintf('Product %05d', n)
ArgumentError:
wrong number of arguments (3 for 2)
# ./spec/models/fg_spec.rb:6:in `fff'
# ./spec/models/fg_spec.rb:31:in `block (3 levels) in <top (required)>'
# ./spec/models/fg_spec.rb:62:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
以下是演示此行为的完整规范:
def fff(n)
sprintf('WWW Product %05d', n)
end
b1 = proc { |n| fff(n) }
b2 = proc { |n| sprintf('WWW Product %05d', n) }
FactoryGirl.define do
factory :product1, :class => Product do
sequence(:name) { |n| 'Product %05d' % "#{n}" } …Run Code Online (Sandbox Code Playgroud)