Это дает вам методы для легкого доступа к реляционному объекту.Такие как @post.comments
@comment.post
.Я понимаю, что вы имеете в виду, применение has_many может подразумевать принадлежность к нему.Несмотря на то, что с учетом накладных расходов разработчика на добавление own_to, это, вероятно, лучше, чем добавление дополнительных системных накладных расходов для динамического добавления методов к нужному классу.
Другое дело, если использовать отношение has_many через другое отношение has_many.Это может привести к нечетным отношениям own_to и, вероятно, к проблемам с SQL.
Например:
class User < ActiveRecord::Base
has_many :roles, :through => :roles_users
has_many :roles_users
end
RolesUser - это таблица соединения, которая имеет значение для_ как для пользователя, так иобразцы для подражания.Подразумевает, что в этом случае «принадлежит», затем добавит к роли модели «принадлежность» для пользователя.Это также не имеет смысла, это также не будет работать из-за отсутствия там столбца базы данных.Конечно, это можно изменить, когда есть опция through, но, опять же, это значительно повысит сложность кода, когда он не нужен.Как сказал Даан в своем ответе, вам не нужно, чтобы оба работали, это необязательно.