在Rails中使用哪种assosciation?

时间:2016-04-12 05:41:36

标签: ruby-on-rails ruby

我在user中创建了projectRails模型。我必须执行一个关联,创建一个如下所述的关系:

1 User has many Projects

1 project has many Users

如何在Rails中创建相关关联?我需要一些帮助来帮助我实现这一目标中的哪种类型的关联。

5 个答案:

答案 0 :(得分:2)

您正在描述多对多关系类型。 Rails允许您使用has_many :throughhas_and_belongs_to_many指令创建此关系。您可以了解差异here

很快,has_many :through允许您在中间表中添加其他列,has_and_belongs_to_many不会。如果您不需要在中间表中使用其他属性而不是使用has_and_belongs_to_many语法。您以后可以随时更改为has_many :through

class Project < ActiveRecord::Base
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :projects
end

答案 1 :(得分:0)

你可以使用has_and_belongs_to_many或has_many。这是我提供的链接,它可以帮助你理清它们之间的区别,哪一个对你有好处。这是你的视频教程association。还有一个很好的链接link。在你的情况下,你需要拥有并属于许多

答案 2 :(得分:0)

您基本上试图建立many-to-many关系。

在Rails中,您可以基于两个关联概念来执行此操作:

  1. has_and_belongs_to_many(HABTM)

  2. has_many :through

  3. 注意:

    如果您不关心这两个表的连接方式(关系模型),并且您不希望对连接数据进行任何逻辑/验证,则应该有HABTM。它只会将您的外键保存在表中,并根据该数据进行提取。

    如果您希望在has_many :throughProject之间建立一个可以称为User模型的中间模型,则需要UserProject。这样您的关联可能如下所示:

    用户模型:

    has_many :user_projects
    has_many :projects, through: :user_projects 
    

    项目模型:

    has_many :user_projects
    has_many :users, through: :user_projects
    

    UserProject Model:

    belongs_to :user
    belongs_to :project
    

答案 3 :(得分:0)

您可能希望在项目和用户之间使用many to many关系。最重要的是,你可能想访问rails官方指南,它非常详细地描述了所有这些关系。

http://guides.rubyonrails.org/association_basics.html

答案 4 :(得分:0)

在这种情况下最好的办法是, 在您的user.rb模型文件中:

has_and_belongs_to_many :projects

并在您的project.rb模型文件中:

has_and_belongs_to_many :users