我正在尝试学习Rails,我正在努力理解如何使用ActiveRecord组件声明自我关系。
如果我有这样的话:
class Comment < ActiveRecord::Base
has_many :comments
belongs_to :comments
end
作为评论的回复和评论的父母的相关评论,如果它们具有相同的名称,我应该如何访问它们?我不能只做comment.comments
,他们需要有不同的名字。
感谢。
答案 0 :(得分:3)
首先,belongs_to
是一个单数关联,所以它将是:
belongs_to :comment
......你没有名字冲突。
但是对于确实存在冲突的情况,您始终可以重命名关系,例如:
has_many :comments
has_many :recent_comments, :class_name => 'Comment', :limit => 10, :order => 'id DESC'
查看关联in the docs选项的更多示例。
答案 1 :(得分:0)
答案 2 :(得分:0)
传递给has_many方法的第一个符号是您要指定的名称。 Rails使用约定优于配置原则,因此它从中获取相关类的名称,但您可以像这样指定它:
has_many :rel, :class_name => "Class"