我已将字段添加到我的设计用户模型(全名和用户名)。这是我的用户模型:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :lockable, :timeoutable, :confirmable and :activatable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :username, :fullname
# attr_accessor :username, :fullname
end
设计工作正常,我可以在我的视图中访问全名。但黄瓜因以下情况而失败:
Scenario Outline: Creating a new account
Given I am not authenticated
When I go to register # define this path mapping in features/support/paths.rb, usually as '/users/sign_up'
And I fill in "user_email" with "<email>"
And I fill in "user_password" with "<password>"
And I fill in "user_password_confirmation" with "<password>"
And I fill in "user_fullname" with "<fullname>"
And I fill in "user_username" with "<username>"
And I press "Sign up"
Then I should see "Signed in as <fullname>"
Examples:
| email | password | fullname | username |
| testing@man.net | secretpass | man net | net |
| foo@bar.com | fr33z3 | foo bar | foo |
出现此错误:
...
Then I should see "Signed in as <fullname>" # features/step_definitions/web_steps.rb:108
Examples:
| email | password | fullname | username |
| testing@man.net | secretpass | man net | net |
undefined method `fullname' for #<User:0x1057a62e0> (ActionView::Template::Error)
/Library/Ruby/Gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:364:in `method_missing'
...
取消注释
attr_accessor :username, :fullname
模型中的使黄瓜工作,但在我看来,我再也无法访问属性fullname - 我做错了什么?
UPDATE :黄瓜不会产生错误但测试失败,因为未将fullname插入数据库:
Started POST "/users" for 127.0.0.1 at Tue Feb 01 13:43:17 +0100 2011
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"commit"=>"Sign up", "utf8"=>"✓", "user"=>{"password_confirmation"=>"[FILTERED]", "fullname"=>"foo bar", "username"=>"foo", "password"=>"[FILTERED]", "email"=>"foo@bar.com"}}
[1m[36mUser Load (0.3ms)[0m [1mSELECT "users"."id" FROM "users" WHERE (LOWER("users"."email") = LOWER('foo@bar.com')) LIMIT 1[0m
[1m[35mAREL (0.3ms)[0m INSERT INTO "users" ("current_sign_in_ip", "last_sign_in_ip", "created_at", "email", "remember_created_at", "reset_password_token", "password_salt", "last_sign_in_at", "remember_token", "sign_in_count", "current_sign_in_at", "encrypted_password", "updated_at") VALUES (NULL, NULL, '2011-02-01 12:43:18.265015', 'foo@bar.com', NULL, NULL, '$2a$10$DzOCWVM1EHxp7E2asqfw8u', NULL, NULL, 0, NULL, '$2a$10$DzOCWVM1EHxp7E2asqfw8uNDPZifWxbBJA1xbfHh83nF1oOD9RTa6', '2011-02-01 12:43:18.265015')
[1m[36mAREL (0.1ms)[0m [1mUPDATE "users" SET "current_sign_in_ip" = '127.0.0.1', "last_sign_in_ip" = '127.0.0.1', "last_sign_in_at" = '2011-02-01 12:43:18.273337', "sign_in_count" = 1, "current_sign_in_at" = '2011-02-01 12:43:18.273337', "updated_at" = '2011-02-01 12:43:18.273724' WHERE ("users"."id" = 1)[0m
Redirected to http://www.example.com/
Completed 302 Found in 325ms
我使用rails 3.0.3和最新的黄瓜/水豚宝石
谢谢你的帮助!
答案 0 :(得分:0)
您在fullname
列表中定义了attr_accessible
字段,但从外观上看,users
表中没有全名字段,也没有在任何字段中列出attr_accessor
致电,就像你已经评论过的那样。
因此,未定义的方法。
答案 1 :(得分:0)
使用耙黄瓜工作正常。现在还有黄瓜功能/ ......有效!?