в огурце не получается - PullRequest
       15

в огурце не получается

0 голосов
/ 01 февраля 2011

Я добавил в поля для своей модели устройства пользователя (полное имя и имя пользователя).Это моя модель пользователя:

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

в модели делает работу огурца, но на мой взглядбольше не могу получить доступ к полному имени атрибута - что я делаю неправильно?

ОБНОВЛЕНИЕ : огурец не выдает ошибку, но тест не пройден, потому что полное имя не вставлено в базу данных:

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

Я использую рельсы 3.0.3 и новейшие самоцветы огурца / капибары

спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 02 февраля 2011

хорошо и спасибо. Я думаю, что нашел проблему: я использовал функцию огурца /..., которая не работала с моими миграциями.

Использование граблей огурца работает отлично. А теперь еще и огуречная особенность / ... работает!?

0 голосов
/ 01 февраля 2011

Вы определяете поле fullname в списке attr_accessible, но, судя по всему, в вашей таблице users нет поля полного имени и оно не указано ни в одном вызове attr_accessor, например тот, который вы закомментировали.

Таким образом, неопределенный метод.

...