在Ruby on Rails中定义has_many和belongs_to关系的目的是什么

时间:2015-08-12 04:39:14

标签: ruby-on-rails mongoid

我不确定我是否理解使用has_many和belongs_to明确定义关系的那一点。我正在使用Mongoid。

  def create
    @node = Node.find(params[:node_id])
    @comment = current_user.comments.new(comment_params)
    @comment.node = @node
    @card_id = params[:card_id]

我知道成员是乐队的一部分,乐队包含许多成员。但是为什么我不能在Member中定义一个名为" band_name"的字符串字段。存储了乐队的名称,我可以用它来从数据库中检索一个成员的相应乐队。

或者,如果我想成为乐队的成员,我不能这样做:

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

1 个答案:

答案 0 :(得分:0)

has_manybelongs_to是Rails提供的两种类型的关联,用于定义模型之间的关联。

要查看所有类型的Rails关联,我建议您查看official Rails documentation

当您定义这样的关联时,Rails会自动将外键添加到数据库中的正确表中,这是Rails遵循正确约定时的优势之一。

简而言之,Active Record关联创建了一些方便的方便方法。但是,您总是可以编写自己的方法来获取所有内容。但这不是Rails方式。

实施例

Band1是一个id = 1的乐队 Band2是一个ID = 2

的乐队

如果AB成员属于Band1,则在数据库中,members表将band_id值设置为1。