2016-09-24 135 views
0

我的db模式有点问题。 我已经创建了一个名为messages的迁移,但它并不好,所以我删除了它们以替换好的messages迁移。 但在我的模式中,我有最后的messages迁移。Rails:迁移不起作用

怎么可能?

轨分贝:迁移:状态:

up 20160924085640 Create conversations 
up 20160924090519 Create messages 

schema.rb:

create_table "conversations", force: :cascade do |t| 
    t.integer "sender_id" 
    t.integer "recipient_id" 
end 

create_table "messages", force: :cascade do |t| 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "subject" 
    t.string "body" 
    t.integer "recipient_id" 
    t.integer "sender_id" 

end 

迁移:

class CreateMessages < ActiveRecord::Migration[5.0] 
    def change 
    create_table :messages do |t| 
     t.text :body 
     t.references :conversation, index: true 
     t.references :user, index: true 
     t.boolean :read, :default => false 
     t.timestamps 
    end 
    end 
end 

路线

resources :conversations do 
    resources :messages 
end 

当我尝试进入/对话

我有这样的错误:uninitialized constant ConversationsController

+0

当您尝试访问'/'对话,这意味着它将搜索'index' 'ConversationsController.rb'方法。你的'ConversationsController.rb'丢失。这不是迁移问题。 – Emu

+0

是的,它是另一个问题^^但为什么我没有在我的shema和迁移文件中相同的迁移? – alex

+0

class ConversationsController alex

回答

0

首先,你应该阅读有关轨道路线和控制器

其对应的操作对于每个路线 你应该有一个控制器 在控制器中的所需路线 和一个视图(erb)在视图中填充

像您所查询的 在控制器 比视图创建索引操作 =>谈话=> index.html.erb

+0

是啊我知道那^^我已经创建了所有我的conversationscontroller是好的 。你可以喜欢我的创建方法吗? ** def create if Conversation.between(params [:sender_id],params [:recipient_id]) .present? 谈话= Conversation.between(PARAMS [:SENDER_ID], PARAMS [:recipient_id])!第一 否则 谈话= Conversation.create(conversation_params) 结束** – alex

+0

错误,当我想创建会话**未定义的方法'之间?'对于# ** – alex

+0

你是在对话模型 – Mukesh