Создание именованных отношений в моделях Rails 3 - PullRequest
2 голосов
/ 24 сентября 2011

Я пытаюсь изучить Rails и пытаюсь понять, как самоотношения объявляются с использованием компонента ActiveRecord.

Если у меня что-то вроде этого:

class Comment < ActiveRecord::Base
    has_many :comments
    belongs_to :comments
end

Бытиесоответствующие комментарии, комментарии и родительский комментарий, как мне получить к ним доступ, если они имеют одинаковые имена?Я не могу просто сделать comment.comments, у них должны быть разные имена.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 24 сентября 2011

С одной стороны, belongs_to является единственной ассоциацией, поэтому это будет:

belongs_to :comment

... и у вас не будет конфликта имен.

Но для случаев, когда у вас есть конфликты, вы всегда можете переименовать отношения, например:

has_many :comments
has_many :recent_comments, :class_name => 'Comment', :limit => 10, :order => 'id DESC'

См. Больше примеров вариантов для ассоциаций в документах .

0 голосов
/ 25 сентября 2011

Первый символ, передаваемый методу has_many, - это имя, которое вы хотите указать. Rails использует принцип Конвенции поверх конфигурации, поэтому он берет имя связанного класса из него, но вы можете указать его следующим образом:

has_many :rel, :class_name => "Class"
0 голосов
/ 24 сентября 2011

Вам необходимо использовать единственное число для belongs_to ассоциаций:

    belongs_to :comment

Похоже, вы пытаетесь создать древовидную структуру Comment с. Возможно, вы захотите взглянуть на драгоценные камни, такие как paginary .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...