Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 RoR有很多,属于很多_Ruby On Rails_Has And Belongs To Many - Fatal编程技术网

Ruby on rails RoR有很多,属于很多

Ruby on rails RoR有很多,属于很多,ruby-on-rails,has-and-belongs-to-many,Ruby On Rails,Has And Belongs To Many,我有两个数据库表,分别是域和类别 域可以有许多类别,类别可以有许多域 这两个模型都是使用has\u和\u属于\u many设置的 从逻辑上讲,当一个类别与一个域相关联时,域与一个类别相关联。然而 irb(main):062:0> domain.categories.any? => false irb(main):063:0> category.domains.any? => true 我错过了什么 HABTM 对于后代,您需要进行以下设置: #app/models/do

我有两个数据库表,分别是域和类别

域可以有许多类别,类别可以有许多域

这两个模型都是使用has\u和\u属于\u many设置的

从逻辑上讲,当一个类别与一个域相关联时,域与一个类别相关联。然而

irb(main):062:0> domain.categories.any?
=> false
irb(main):063:0> category.domains.any?
=> true
我错过了什么

HABTM

对于后代,您需要进行以下设置:

#app/models/domain.rb
class Domain < ActiveRecord::Base
   has_and_belongs_to_many :categories
end

#app/models/category.rb
class Category < ActiveRecord::Base
   has_and_belongs_to_many :domains
end

#table - categories_domains - category_id | domain_id
#app/models/domain.rb
类域
这为您提供了调用相应对象上的
domain.categories
category.domains
方法所需的相对关联


关联

为了向您强调这个想法(因为您是新手),让我详细介绍一下在Rails中的重要性

Rails是一个,并且是。如果你开始的话,这并不意味着什么,但随着你的进步,这将变得非常重要

Rails面向对象的特性意味着,每当您想要添加一项功能时,您确实需要围绕对象工作。根据MVC,您的对象是在
模型
中构建的(这就是为什么您可以调用
模型.new
等)

当您关联对象(模型)时,您基本上告诉Rails(通过),这两个对象是关联的。AR被称为ORM,这意味着它提供了一种更方便地调用关联数据的方法:

--


这意味着,如果您想将两个对象(模型)关联在一起,您基本上需要在各自的模型中定义这两个关联,这将在应用程序的其他部分提供功能

您可以发布模型中的关系吗?您的迁移可能也很有用。您确定要检查的域属于某个类别吗?能否将
domain.category\u id
category.domain\u id
domain.id
category.id
的输出放在下面?我深表歉意。我正在学习RoR,并饱受信息过载之苦。域和类别不相关。