Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有许多直通铁路_Ruby On Rails_Ruby On Rails 4_Model View Controller_Has Many Through - Fatal编程技术网

Ruby on rails 有许多直通铁路

Ruby on rails 有许多直通铁路,ruby-on-rails,ruby-on-rails-4,model-view-controller,has-many-through,Ruby On Rails,Ruby On Rails 4,Model View Controller,Has Many Through,在使用了很长一段时间的其他技术之后,我又回到了轨道上,看起来我有点生疏了 我一直在尝试处理项目、客户和联系人,结果让我有点困惑 起初我在我的项目中只有一个联系人id,所有的东西都找到了,但我发现我真的很想在一个项目中有多个联系人 这就是我一直在尝试的: 项目模型: 联系方式: 项目联系人模型: 我认为这还可以,但当我使用Rails控制台时,我得到了以下结果: 2.2.3:001>project=project.find31 项目负载0.3ms从“项目”中选择“项目”。*其中“项目”。“id”=3

在使用了很长一段时间的其他技术之后,我又回到了轨道上,看起来我有点生疏了

我一直在尝试处理项目、客户和联系人,结果让我有点困惑

起初我在我的项目中只有一个联系人id,所有的东西都找到了,但我发现我真的很想在一个项目中有多个联系人

这就是我一直在尝试的:

项目模型:

联系方式:

项目联系人模型:

我认为这还可以,但当我使用Rails控制台时,我得到了以下结果:

2.2.3:001>project=project.find31 项目负载0.3ms从“项目”中选择“项目”。*其中“项目”。“id”=31限制1 => 2.2.3:002>项目联系人 NameError:未初始化的常量项目::ProjectContact

编辑:

接触迁移

我真的非常感谢你在这方面的帮助


再见

您在课堂联系中有一个输入错误:有很多,但没有manny。

好的,所以我只是将课程名称改为参与者来尝试,一切都很好:-|

对于子孙后代,我希望它是这样的:

#app/models/project.rb
class Project < ActiveRecord::Base
   has_many :project_contacts
   has_many :contacts, through: :project_contacts
end 

#app/models/project_contact.rb
class ProjectContact < ActiveRecord::Base
   #columns id | project_id | contact_id | created_at | updated_at
   belongs_to :project
   belongs_to :contact
end

#app/models/contact.rb
class Contact < ActiveRecord::Base
   has_many :project_contacts
   has_many :projects, through: :project_contacts
end

好吧,我想如果你有一个很好的IDE可以提供建议,那就太好了,但它不能解决我的pb问题。你能发布你的迁移吗?@gaetan尝试一个名为RubyMine的IDE;当您在控制台中键入ProjectContact.all时,您有什么?是否运行了迁移?我知道这个愚蠢的问题,但你们永远不知道。另外,projet.project_联系人返回什么?在运行project.contacts之前,此关联必须起作用。同样对于这种关联,如果您不需要在ProjectContact模型中执行特殊操作,您应该使用has_和_-belish_-to_-many:是的,我确实运行了迁移,我还手动插入了一行来记录。project.project\u contacts返回未定义的方法我是否应该添加一个外键,如:add\u foreign\u key:projectcontacts,:projects,column::project\u id,on\u delete::nullify for project and contact?不,我认为您不必这样做。。。隐马尔可夫模型。。。让我测试一下你的代码:谢谢:-。真的很难单独回到rails=]根据rails惯例,原始表应该是projects\u contacts这是has\u所期望的,并且属于许多协会。但当您使用与正确配置的表名的直通关联时。。。奇怪的是,它一开始就不起作用。正如我所说,我用这些确切的名字测试了它,它对我起了作用。。。真的很奇怪,它对你不起作用。你能发布你的新模型吗?关键是Project::ProjectContactOk我不确定是否要在表名上对项目进行多元化。感谢更新:-表名为复数,型号为单数!是的,我知道,我只是不确定子词。我想在这张桌子上用复数是合乎逻辑的。
class Contact < ActiveRecord::Base
  belongs_to :client, class_name: Client, foreign_key: "client_id"
  has_manny :project_contacts
  has_many :projects, :through => :project_contacts
end
class ProjectContact < ActiveRecord::Base
  belongs_to :project
  belongs_to :contact
end
class AddProjectContacts < ActiveRecord::Migration
  def change
    create_table :project_contacts do |pc|
      pc.belongs_to :project, index: true
      pc.belongs_to :contact, index: true
      pc.timestamps null: false
    end
  end
end
#app/models/project.rb
class Project < ActiveRecord::Base
   has_many :project_contacts
   has_many :contacts, through: :project_contacts
end 

#app/models/project_contact.rb
class ProjectContact < ActiveRecord::Base
   #columns id | project_id | contact_id | created_at | updated_at
   belongs_to :project
   belongs_to :contact
end

#app/models/contact.rb
class Contact < ActiveRecord::Base
   has_many :project_contacts
   has_many :projects, through: :project_contacts
end
@project = Project.find params[:id]
@project.contacts #-> shows all contacts