On Jun 11, 1:41 am, dave
<davidmb...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org>
wrote:> I keep getting this exception "SQLite3::SQLException: no such
> column: books.user_id: SELECT "books".* FROM "books"
WHERE
> ("books".user_id = 4)" ,which sounds like there is no
user_id in books
> table.So i just installed foreigner plugin and added "
> t.integer :user_id, :null => false" and
> "add_foreign_key(:books, :users)" in book migration and i ran
"rake
> db:migrate" but still it is giving me the same exception.I am using
> Rails 3 in windows and devise to authenticate user.
If you edit a migration that has already been run, rails doesn''t know
that you want to run it again. Either revert the changes to the first
migration and add a second migration that adds the new column, or run
rake db:migrate:redo to tell rails to undo the latest migration and
then run it again (this will drop your books table and recreate it -
don''t do this if you have data you want to keep).
Fred> HOME VIEW
> <p><%= link_to "Add new Book",:controller
=>"book", :action =>
> ''new'' %></p>
> <% @books.each do |b| %>
> <p><%= b.author%></p>
> <p><%= b.title%></p>
> <%end%>
> HOME CONTROLLER
>
> class HomeController < ApplicationController
> def index
> @user = current_user
> @user.books||=Book.new
> @boo...-oYuHCGEpEszcAyKPGuxKgw@public.gmane.org
> end
> end
> BOOK CONTROLLER
>
> class BookController < ApplicationController
> def new
> @books = Book.new
> # redirect_to :controller=>"home"
,:action=>"index"
> end
>
> def create
> @books = Book.new(params[:book])
> if @books.save
> render "home/index"
> #redirect_to :controller=>"home"
,:action=>"index"
> else
>
> render :action => ''new''
> end
> end
>
> CREATE TABLE/BOOK MIGRATION
>
> class CreateBooks < ActiveRecord::Migration
> def self.up
> create_table :books do |t|
> t.text :title
> t.text :author
> t.integer :user_id, :null => false
> t.timestamps
> end
> add_foreign_key(:books, :users)
> end
>
> BOOK VIEW
>
> <h1>Book#new</h1>
>
> <%= form_for(:book) do |f| %>
> <p><%= f.text_field :title %></p>
> <p><%= f.text_field :author %></p>
> <p><%= f.submit "Add book"%>
> BOOK MODEL
>
> class Book < ActiveRecord::Base
> belongs_to :user
> end
> USER MODEL
>
> class User < ActiveRecord::Base
> has_many :books
> # Include default devise modules. Others available are:
> # :token_authenticatable, :lockable, :timeoutable and :activatable
> devise :database_authenticatable, :registerable,
> :recoverable, :rememberable, :trackable, :validatable
>
> # Setup accessible (or protected) attributes for your model
> attr_accessible :email, :password,
:password_confirmation,:firstname,:lastname,:school,:major,:sex,:zipcode
>
> end
>
> ROUTE
> Campus::Application.routes.draw do
> get "book/index"
>
> get "book/edit"
>
> get "book/new"
>
> get "home/edit"
>
> devise_for :users
> resources :book
> root :to=> "home#index"
> match ''/book/new'' =>"home#index"
> end
>
> DATABASE SCHEMA
> ActiveRecord::Schema.define(:version => 20110609055608) do
>
> create_table "books", :force => true do |t|
> t.text "title"
> t.text "author"
> t.datetime "created_at"
> t.datetime "updated_at"
> end
>
> create_table "users", :force => true do |t|
> t.string "email", :default
=>
> "", :null => false
> t.string "encrypted_password", :limit => 128, :default
=>
> "", :null => false
> t.string "password_salt", :default
=>
> "", :null => false
> t.string "reset_password_token"
> t.string "remember_token"
> t.datetime "remember_created_at"
> t.integer "sign_in_count", :default
=> 0
> t.datetime "current_sign_in_at"
> t.datetime "last_sign_in_at"
> t.string "current_sign_in_ip"
> t.string "last_sign_in_ip"
> t.datetime "created_at"
> t.datetime "updated_at"
> t.string "firstname"
> t.string "lastname"
> t.text "school"
> t.text "major"
> t.string "sex"
> t.integer "zipcode"
> end
>
> add_index "users", ["email"], :name =>
> "index_users_on_email", :unique => true
> add_index "users", ["reset_password_token"], :name
=>
> "index_users_on_reset_password_token", :unique => true
>
> end
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.