2014-12-07 59 views
1

我正在處理一些教程,我遇到了一些問題。 RubyMine的找不到相關的Rails模型「:用戶協會我使用的失敗RubyMine錯誤:無法找到':用戶'關聯的關聯Rails模型失敗


- RubyMine的7
- 紅寶石版本meneger(RVM)
- 紅寶石1.9.3-P551 [x86_64的]
- 紅寶石2.1.5 [x86_64的]
- 軌道的Rails 4.1.8

- 珠寶sqllite3

我的車型有:

class Company < ActiveRecord::Base 
    has_many :users 
    has_many :projects 
end 

class Project < ActiveRecord::Base 
    belongs_to :company 
    has_many :works 
    has_many :users, :through => :works 
end 

class User < ActiveRecord::Base 
    belongs_to :company 
    has_many :works 
    has_many :projects, :through => :works 
end 

class Work < ActiveRecord::Base 
    belongs_to :project 
    belongs_to :user 
end 

enter image description here

Shema.rb

ActiveRecord::Schema.define(version: 20141207111312) do 

    create_table "companies", force: true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "projects", force: true do |t| 
    t.string "name" 
    t.integer "company_id" 
    t.integer "default_rate" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "users", force: true do |t| 
    t.string "fname" 
    t.string "lname" 
    t.integer "company_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "user_id" 
    end 

    add_index "users", ["user_id"], name: "index_users_on_user_id" 

    create_table "works", force: true do |t| 
    t.integer "project_id" 
    t.integer "user_id" 
    t.datetime "datetimeperformed" 
    t.decimal "hours",    precision: 5, scale: 2 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 

有什麼錯我的代碼或這是一些錯誤的RubyMine配置?

UPDATE:
問題是相同的,如果我使用Mysql2或sqllite3寶石

+0

檢查我的答案。如果你沒有這些協會的參考。你可以在我的回答後做到這一點。 – Rubyrider 2014-12-07 10:56:28

+0

也請在您的問題中添加您的schema.rb文件。 – Rubyrider 2014-12-07 10:59:09

+0

我已經更新了一個問題 – 2014-12-07 11:25:46

回答

2

看起來問題出在RubyMine的編輯器(錯誤)! 如果你運行你的應用程序,讓我們說一下ruby-2.1.5,並且你將RubyMine設置(Ruby SDK和gems)更改爲其他版本,然後再改回ruby-2.1.5版本,你會得到這個錯誤。

快速修復是您創建一個新的項目,並複製粘貼有這些文件

+1

感謝您的提示。我從項目中刪除了.idea目錄,然後再次將項目添加到RubyMine。另一個值得嘗試的方法是在.ruby-version文件中添加「ruby-」前綴,以便自動檢測gemset。 – Kotu 2015-01-27 09:31:11

0

所有稱其沒有發現它們都需要形成當前模型用戶關聯的參考場。

所以你最好檢查一下,如果你已經添加了列引用用戶到這些表或者如果你已經這樣做,如果你運行遷移來完成數據庫上的更改,請再次重新檢查。

# example 
add_reference :users, :company, index: true 

或產生以下遷移:

rails g migration AddCompanyRefToUsers user:references 

在另一邊,也可能是的RubyMine的緩存問題。 #我不知道

參考:http://edgeguides.rubyonrails.org/active_record_migrations.html

+0

對不起,但是這並沒有解決問題... thx無論如何幫助 – 2014-12-07 11:15:41

2

這是一個常見的RubyMine錯誤,往往可以通過運行文件/無效緩存&重啓解決。