Ruby on rails 什么';在RubyonRails中定义has_许多并且属于关系的目的是什么
我不确定我是否理解使用has\u many并属于\u显式定义关系的意义。我用的是MongoidRuby on rails 什么';在RubyonRails中定义has_许多并且属于关系的目的是什么,ruby-on-rails,mongoid,Ruby On Rails,Mongoid,我不确定我是否理解使用has\u many并属于\u显式定义关系的意义。我用的是Mongoid class Band include Mongoid::Document field: name, type: String has_many :members end class Member include Mongoid::Document field :name, type: String belongs_to :band end 我知道一个成员是乐队的一部分,乐队
class Band
include Mongoid::Document
field: name, type: String
has_many :members
end
class Member
include Mongoid::Document
field :name, type: String
belongs_to :band
end
我知道一个成员是乐队的一部分,乐队中有很多成员。但为什么我不能在名为“band_name”的成员中定义一个字符串字段,该字段存储了乐队的名称,我可以使用该字段稍后从数据库中检索成员对应的乐队
或者,如果我想获得乐队成员,我就不能:
Member.where(band_name => "Coldplay");
有许多
和属于
是Rails提供的两种类型的关联,用于定义模型之间的关联
要查看所有类型的Rails关联,我建议您查看
当您这样定义关联时,Rails会自动将外键添加到数据库中的正确表中,这是Rails在遵循正确约定时的优势之一
简而言之,活动记录关联创建了大量方便的方法。但是,您始终可以编写自己的方法来获取所有内容。但这不是Rails的方式
例子:
Band1
是id为1的频带
Band2
是id为2的频带
如果
A
和B
成员属于Band1
,那么在数据库中,members
表将band\u id
值设置为1。有许多和属于
是Rails提供的两种类型的关联,用于定义模型之间的关联
要查看所有类型的Rails关联,我建议您查看
当您这样定义关联时,Rails会自动将外键添加到数据库中的正确表中,这是Rails在遵循正确约定时的优势之一
简而言之,活动记录关联创建了大量方便的方法。但是,您始终可以编写自己的方法来获取所有内容。但这不是Rails的方式
例子:
Band1
是id为1的频带
Band2
是id为2的频带
如果A
和B
成员属于Band1
,则在数据库中,members
表将band\u id
值设置为1。我如何明确指定哪些成员是每个band的一部分。如果我使用has_many and besive_to关系,我有两个波段,波段1和波段2,以及四个成员,A、B、C、D,我如何指定A和B属于波段1,C和D属于波段2。我找不到任何关于初始化对象的内容。如果您以这种方式定义关联,那么当您创建带和成员时,成员将在其中包含一个带id
,使用该id您将知道它属于哪个带。为了解释您的示例,A和B成员将在数据库中拥有Bband
s id的band\u id
。您不必初始化这些。当您创建成员
和波段
记录时,ID将自动生成。但是如果我们希望成员A和B成为波段2的一部分,该怎么办。我们如何明确定义它呢?只需更新数据库中成员A和B的id即可。设置band\u id
=2并保存记录,它现在将属于Band2
,其中Band2
s id=2位于bands
表中。我如何明确指定哪些成员是每个频带的一部分。如果我使用has_many and besive_to关系,我有两个波段,波段1和波段2,以及四个成员,A、B、C、D,我如何指定A和B属于波段1,C和D属于波段2。我找不到任何关于初始化对象的内容。如果您以这种方式定义关联,那么当您创建带和成员时,成员将在其中包含一个带id
,使用该id您将知道它属于哪个带。为了解释您的示例,A和B成员将在数据库中拥有Bband
s id的band\u id
。您不必初始化这些。当您创建成员
和波段
记录时,ID将自动生成。但是如果我们希望成员A和B成为波段2的一部分,该怎么办。我们如何明确定义它呢?只需更新数据库中成员A和B的id即可。设置band\u id
=2并保存记录,此时它将属于Band2
,其中Band2
s id=2位于bands
表中。