Расскажите мне, как строить отношения между моделями следующим образом:
- Вы можете иметь много сообщений
- Другие пользователи могут писать друг другу позиции на стене (как в социальной . сети, а именно, когда вы можете сам создать запись, или вы можете создать его на другой странице пользователяКак создать правильную ассоциацию
ответ
вы должны по крайней мере попытаться сделать это самостоятельно, но вот решение:
модели пользователя:
User (id, name)
has_many :posts
has_many :comments
has_many :commented_posts, through: :comments
Почтовая модель:
Post (id, content, user_id)
belongs_to :user
has_many :comments
комментарий модель:
Comment (id, content, post_id, user_id)
belongs_to :user
belongs_to :post
Если вы refereing на должности в среде, с которой пользователь может помечать другим пользователям, так что пост может появиться на стенах.
Вы можете определенно использовать сообщения, чтобы писать стенам других людей. То, как работает любая социальная платформа, тот же пост может выступать в роли автономной почты, такой как пользователь блога, для своих последователей или в частности сообщества.
Я социальный канал, как платформа, теги пользователей на почте - это единственный способ нажимать сообщение на стене для любого пользователя.
Итак, у нас могут быть следующие сущности.
Пользователь
class User < ActiveRecord::Base
has_many :usertags
has_many :posts
end
Сообщение
class Post < ApplicationRecord
has_many :usertags, as: :usertagable
belongs_to :user
has_many :comments ,:as => :commentable
end
Usertag
class Usertag < ApplicationRecord
belongs_to :user
belongs_to :usertagable, :polymorphic => true
end
я есть строить полиморфные отношения для usertags, как вы можете продлить текущую схему для включает комментарии на посты, а также как и следующая модель комментариев, которую можно обслуживать с использованием полиморфных отношений.
class Comment < ApplicationRecord
# all the relations for the comment
belongs_to :user
belongs_to :post
belongs_to :commentable, :polymorphic => true
has_many :comments, :as => :commentable
has_many :usertags, as: :usertagable
end
Комментарий в свою очередь, принадлежат пользователям/автору, пост, к которому присоединен комментарий, комментарий может также быть прокомментированы, поэтому он может также принадлежать commentable. Также комментарий может быть упомянутым пользователем, как и сообщения, например, сообщения.
Социальная платформа, такая как платформа, теги пользователей на почте - это единственный способ нажимать сообщение на ленту на стене любого пользователя.
Теперь вы можете легко получить все сообщения, принадлежащие конкретному пользователю, вместе с usertagged, комментариями, авторскими комментариями.
post_list = Post.eager_load(:followers, :user, :communities, :usertags => :user, :comments => [:usertags => :user]).select("*").where("user.id is ?", :user_id)
Надеюсь, что это поможет Спасибо.
- 1. SailsJS через ассоциацию: как создать ассоциацию?
- 2. Как создать ассоциацию рельсов
- 3. Как создать эту ассоциацию `through``?
- 4. Как создать ассоциацию трех моделей?
- 5. Создать ассоциацию в Rails
- 6. Как создать правильную функцию суммы?
- 7. Как создать правильную структуру классов?
- 8. Создать Ассоциацию по регистрации Придумайте
- 9. Создать ассоциацию ответов в rails
- 10. Как мы можем создать многоуровневую ассоциацию laravel
- 11. Как создать ассоциацию Unary в CakePhp?
- 12. Проектирование классов (начинающих). Как создать Ассоциацию
- 13. Как создать область, которая пересекает полиморфную ассоциацию?
- 14. Как создать ассоциацию many_to_many и немецкие tablenames
- 15. Как создать ассоциацию hasMany в sequelize
- 16. Как создать ассоциацию has_many с несколькими типами?
- 17. Как создать требуемую ассоциацию «BelongsTo», используя Sequelize?
- 18. Создать правильную таблицу в R
- 19. Как создать/создать ассоциацию «многие-ко-многим» в factory_girl?
- 20. GTK: создать цветную правильную кнопку
- 21. Как создать правильную ссылку на javadoc?
- 22. Как создать правильную иерархию объектов в C++
- 23. Как создать правильную взаимосвязь между классами
- 24. Как создать правильную гиперссылку в VBA?
- 25. Как создать правильную ViewModel для комплексной модели
- 26. Как создать более «правильную» многопользовательскую переменную jQuery
- 27. Как создать правильную структуру классов в java
- 28. Rails devise: создать ассоциацию на пользователе sign_up
- 29. Создать через ассоциацию с несколькими ассоциациями
- 30. Создать ассоциацию Rails с разными именами столбцов
Я отредактировал свой ответ с более подробной информацией о том, как вы можете использовать это, чтобы писать на других пользователях/стенах. Надеюсь, поможет. – user3775217