Как отображать сообщения на основе информации о пользователях, используя какие-то условия - PullRequest
0 голосов
/ 08 июня 2018

В моем приложении rails я создал систему пользовательских профилей, в которой пользователи, которые будут публиковать сообщения, должны выбрать один город из списка городов, в которых они живут. В моей модели постов я добавил принадлежность__: пользователь

class Post < ApplicationRecord
    has_attached_file :image, styles: { large: "300x300>", medium: "300x300>", thumb: "100x100>" }
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
    belongs_to :user
    delegate :city, :to => :user
    searchkick text_start: [:title]
    belongs_to :category
    has_many :reviews
end

и в модели пользователя, которую я также добавил, есть много: posts.

class User < ApplicationRecord
    has_attached_file :avatar, styles: { medium: '152x152#' }
validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/
has_attached_file :banner, styles: { large: "500x500>", medium: "300x300>", thumb: "100x100>" }
    validates_attachment_content_type :banner, content_type: /\Aimage\/.*\z/
    has_many :posts
    has_many :reviews
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

Проблема сейчас в том, что я пытаюсь отобразить все сообщения, сделанные пользователями из каждого города или конкретного города по-разному.на другой странице, соответствующей городу, принадлежит post.user.city.

как именно я, например, мог бы запрашивать сообщения от пользователей в Канаде.в моем контроллере я попытался:

@ posts = Post.user.where ("city: canada")

поверьте мне, что это не сработало, потому что я совершенно новичок в рельсах иМне так нравится, как работают рельсы.

Буду признателен за любую помощь или подсказку для решения этой проблемы.спасибо

Ответы [ 3 ]

0 голосов
/ 08 июня 2018
@posts = Post.joins(:user).where(users: {city: 'Canada'})
0 голосов
/ 10 июня 2018

Это то, что я сделал, и это сработало:

Создала модель города и добавила пользовательский_ответ: модель города, как указано в @Crisgm:

class City < ApplicationRecord
  has_many :users
  has_many :posts, through: :users
end

class User < ApplicationRecord
  ....
  belongs_to :city
  ....
end

Это не сработало:

City.find_by(name: 'Canada').posts

Однако идея @ Виджаякумара сработала на моем контроллере:

@posts = Post.joins(:user).where("users.city = (?)", 'canada')
0 голосов
/ 08 июня 2018

Попробуйте

@posts = Post.joins(:user).where("users.city = (?)", 'canada')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...