Это - вероятно, немой вопрос, но я, может казаться, не нахожу хороший ответ. Я хочу знать лучший способ вернуться к модели, которой принадлежит объект.
Например:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :users
end
Так, для получения сообщений пользователя я могу использовать user.posts, но получить пользователя сообщения, я не могу сделать реверса: post.user
Если я добавляю "пользовательский" метод к модели Post, это работает, но это, кажется, не лучший способ.
class Post < ActiveRecord::Base
belongs_to :users
def user
User.find(self.user_id)
end
end
При рассмотрении этого сообщения в блоге http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips как пример Вы видите, что автор использует post.user.username, который не работает из поля, а также: включайте => [: пользователь], который также не работает, даже с "пользовательским" методом в модели Post.
Я знаю, что это является элементарным, так спасибо за Ваше терпение. Я просто хочу знать лучший способ выполнить это отношение.
Моя главная цель состоит в том, чтобы записать, "находит", что вложенное использование включает, которые вернулись пользователю как так:
отправьте = Post.find (: все: включайте => [: пользователь])
Когда я пробую это, я получаю "ActiveRecord:: ConfigurationError: названный 'пользователь' Ассоциации не был найден; возможно, Вы написали его c орфографическими ошибками?"
Большое спасибо.
Я немного новичок в Рэйлсе, но это должно работать автоматически...
Ах - вы назвали родительский класс в Post как принадлежит_к :users
; но так как он принадлежит только одному пользователю, Rails ожидает, что принадлежит_к :user
(или, конечно, принадлежит_к :users, :class_name => "User"
).
То есть:
class Post < ActiveRecord::Base
belongs_to :user
end
должен делать эту работу.
.