새 레일 애플리케이션에 대한 사용자 가입 생성이 끝났습니다. 로컬 컴퓨터에서 모든 것이 잘 작동했습니다. 그러나 heroku에서 배포 된 앱은 "new.html.erb"을 렌더링하는 signup_path를로드하지 않습니다. 이 경로를 클릭하면 로그를 확인하라는 오류 메시지가 나타납니다.Heroku Rails 마이그레이션 오류
로그를 확인하고 몇 가지 시도를했지만 현재 어떻게 해야할지 모릅니다. http://pastebin.com/v1fVqLbL
오류는 다음과 같습니다 : 롤백을하지만 실제로 마이그레이션 중 하나가 있기 때문에 롤백 할 수없는 것 : 나는 다시에게 Heroku를 사용하여 내 마이그레이션 롤링 시도했습니다
ActionView::Template::Error (undefined method `phone' for #<User:0x007f05a265c030>):
갈퀴 DB를 실행 여기 로그입니다 heroku rake db : status는 나에게 마지막 (전화 번호에 대한 인덱스)을 현재로 제공합니다.
때때로이 오류를 얻기 롤백하려고 :
[email protected]:~/workspace/AccessOBD (master) $ heroku run rake db:rollback
Running `rake db:rollback` attached to terminal... up, run.2007
ActiveRecord::SchemaMigration Load (1.7ms) SELECT "schema_migrations".* FROM "schema_migrations"
ActiveRecord::SchemaMigration Load (1.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
Migrating to AddIndexToUsersPhoneNumber (20150204094519)
(1.2ms) BEGIN
== 20150204094519 AddIndexToUsersPhoneNumber: reverting =======================
-- remove_index(:users, {:column=>:phone})
(1.4ms) ROLLBACK
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Index name 'index_users_on_phone' on table 'users' does not exist/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:947:in `index_name_for_remove'
new.html.erb
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :phone, "Phone Number" %>
<%= f.phone_field :phone, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirm Your Password" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
User.rb
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
VALID_PHONE_REGEX = /\A(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}\z/
validates :phone, presence: true, length: {maximum: 15},
format: { with: VALID_PHONE_REGEX },
uniqueness: true
has_secure_password
validates :password, length: { minimum: 6 }
end
내 생산 스키마 , 나 벨 ieve 전화가 정의됩니다
ActiveRecord::Schema.define(version: 20150204094519) do
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.string "phone"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["phone"], name: "index_users_on_phone", unique: true
end
Heroku가 마이그레이션을 :
20150204074511_create_users.rb 20150204093042_add_phone_number_to_users.rb
20150204081616_add_index_to_users_email.rb 20150204094519_add_index_to_users_phone_number.rb
20150204081750_add_password_digest_to_users.rb
필요한 경우 다른 파일을 추가 할 수 해피. Hartl의 최신 튜토리얼에서 최종 gemfile을 실행 중입니다. 무엇을 해야할지 모르겠다.
"롤백을 시도 할 때이 오류가 발생하는 경우 :"이 오류는 무엇입니까? –
@MarekLipka 그냥 깨진 오류 중 일부를 깨달았습니다. 위에 업데이트되었습니다. –