2014-12-07 86 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错误,往往可以通过运行文件/无效缓存&重启解决。