2013-06-09 3 views
0

UPDATE: В целом я все еще пытаюсь избавиться от ошибки, которую я получаю ниже. Я повторно просмотрел видео несколько раз, чтобы попытаться определить шаг, который, возможно, поступил неправильно. Я удалил db/migrate AddUserIdtoStatuses и изменил это. Теперь, когда я грабли БД: мигрировать я получаю следующие ошибки в моем терминале:NoMethodError in Statuses

new-host:treebook ScottDAlessandro$ rake db:migrate 
== AddUserIdToStatuses: migrating ============================================ 
-- add_column(:statuses, :user_id, :integer) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: duplicate column name: user_id: ALTER TABLE "statuses" ADD "user_id" integer/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `initialize' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `new' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `prepare' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:134:in `execute' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in `block in execute' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in `execute' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/schema_statements.rb:264:in `add_column' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:400:in `add_column' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:466:in `block in method_missing' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:438:in `block in say_with_time' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:438:in `say_with_time' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:458:in `method_missing' 
/Users/ScottDAlessandro/code/treebook/db/migrate/20130610190852_add_user_id_to_statuses.rb:3:in `change' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:407:in `block (2 levels) in migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:407:in `block in migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in `with_connection' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:389:in `migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:528:in `migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:720:in `block (2 levels) in migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `call' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `block in ddl_transaction' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/transactions.rb:208:in `transaction' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `ddl_transaction' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:719:in `block in migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:700:in `each' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:700:in `migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:570:in `up' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/migration.rb:551:in `migrate' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.12/lib/active_record/railties/databases.rake:179:in `block (2 levels) in <top (required)>' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:246:in `call' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:241:in `each' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:101:in `each' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

Я вижу дубликата имя столбца, означает ли это, когда я удалил файл, прежде чем «переделать» некоторые из моих последних работ на проекта, что я не удалял все в моей базе данных SQL?

Я следую руководству Ruby on Rails на сайте teamtreehouse.com. Я продолжаю сталкиваться с этой ошибкой

NoMethodError in Statuses#new 

Showing /Users/ScottDAlessandro/code/treebook/app/views/statuses/_form.html.erb where line #16 raised: 

undefined method `name' for #<Status:0x00000107254ec0> 
Extracted source (around line #16): 

13: 
14: <div class="field"> 
15:  <%= f.label :name %><br /> 
16:  <%= f.text_field :name %> 
17: </div> 
18: <div class="field"> 
19:  <%= f.label :content %><br /> 
Trace of template inclusion: app/views/statuses/new.html.erb 

Rails.root: /Users/ScottDAlessandro/code/treebook 

Application Trace | Framework Trace | Full Trace 
app/views/statuses/_form.html.erb:16:in `block in _app_views_statuses__form_html_erb__871609707240624879_2174651900' 
app/views/statuses/_form.html.erb:1:in `_app_views_statuses__form_html_erb__871609707240624879_2174651900' 
app/views/statuses/new.html.erb:3:in `_app_views_statuses_new_html_erb__3089828772916649988_2174583640' 
app/controllers/statuses_controller.rb:29:in `new' 
Request 

Parameters: 

None 
Show session dump 

Show env dump 

Response 

Headers: 

None 

Эта ошибка возникает при попытке обновить статус на моей странице. Вот несколько других файлов, которые я недавно обновил.

** ОБНОВЛЕНО _form

<%= form_for(@status) do |f| %> 
    <% if @status.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@status.errors.count, "error") %> prohibited this status from being saved:</h2> 

     <ul> 
     <% @status.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :content %><br /> 
    <%= f.text_area :content %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

дб/мигрировать

class AddUserIdToStatuses < ActiveRecord::Migration 
    def change 
    add_column :statuses, :user_id, :integer 
    add_index :statuses, :user_id 
    remove_column :statuses, :name 
    end 
end 

Извините за плохое описание, но я потерял слова на этой ошибке. Я не на 100%, когда эта ошибка всплыла, казалось, что все идет довольно гладко во всем проекте. Кто-нибудь знает, где я мог поступить неправильно или почему я получаю эту ошибку? Спасибо :)

+0

в вашем _form.html.erb, у вас есть поле имени не full_name .. – Rinku

+0

Есть много повторяющегося кода - я думаю, вам нужно прояснить, какой код у вас на самом деле сейчас, и какую ошибку вы дадите. – sevenseacat

+0

Спасибо, только что удалил старый код! – HelloWorld

ответ

0

Похоже, что на вашем statuses не найдено поля full_name. Либо у вас нет миграции, которая добавляет это поле, либо у вас есть, но вы не запускаете его против своей базы данных.

Или, если full_name должно быть вычисленным полем, основанным на значениях других полей, то вам необходимо добавить метод full_name к вашей модели Status.

+0

Вы правы. Я только что отредактировал «full_name» на «_name» и до сих пор получаю ошибку. Я добавил «полный» в этом разделе, основываясь на другом примере, который я видел на этих форумах. Первоначально это было только «: name». Я сделал некоторые обновления в исходном сообщении выше с исходным файлом _form.html.erb и получаю почти ту же ошибку, но вместо full_name это просто: name. – HelloWorld

0

Если вы используете некоторую модель form_for, поля ожидают, что атрибуты модели будут присутствовать. В этом случае ваша модель status не имеет атрибута full_name и, следовательно, является исключением.

+0

Я добавил новый код выше исходного файла проекта (это _form.html.erb, который используется инструктором на данном этапе проекта). Кроме того, вы правы full_name никогда не должно было быть там. Он был изменен на: name, но я все еще получаю очень похожую ошибку. Спасибо за ваш вклад :) – HelloWorld

0

Я думаю, что проблема, с которой вы сталкиваетесь (согласно строке 15), заключается в том, что у вас есть опечатка, и вам нужно будет использовать fulll_name.

+0

спасибо за помощь. Я только что отредактировал «full_name» на «_name» и до сих пор получаю ошибку. Я также добавил «полный» в этом разделе, основываясь на другом примере, который я видел на этих форумах. Первоначально это было только «: name» – HelloWorld

0

Ваша форма пытается отобразить поле name для вашей модели статуса, но при последнем переносе вы просто удалили это поле. Это поле name должно быть на форме вообще? Вы случайно удалили поле name и его нужно вернуть в базу данных?

+0

Да, поле имени, которое я считаю, находится в форме. Я смотрю файлы проекта, опубликованные инструктором, на этом этапе проекта, и eveyrthing в этом файле идентичен. В видео он также проходит этот шаг и включает в себя: имя в этом разделе. – HelloWorld

+1

Название поля * есть * в форме. Это не * * в модели. Отсюда и ошибка. – sevenseacat