Rails 3 Querying: Найти все сообщения с одинаковой темой - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь создать запрос, который находит все сообщения, принадлежащие одному и тому же идентификатору темы. Я считаю, что я на правильном пути, но все, что возвращает @posts, - это каждое сообщение в базе данных.

Темы контроллера:

def show
  @topic = Topic.find(params[:id])
  @title = @topic.name
  @posts = Post.where('topic' == @topic).order("updated_at").page(params[:page]).per(10) #not working. still just fetches all posts
  respond_with(@posts)
end

Модель темы:

class Topic < ActiveRecord::Base
  has_many :posts, :dependent => :destroy
  attr_accessible  :name
end

Почтовая модель:

class Post < ActiveRecord::Base
  belongs_to :topic,    :touch => true
  accepts_nested_attributes_for :topic
  attr_accessible :name, :title, :content, :topic, :topic_attributes
end

Ответы [ 3 ]

1 голос
/ 03 мая 2011

Я бы порекомендовал вам использовать ассоциацию в модели, чтобы получить все сообщения. Вы можете сделать это так:

def show
  @topic = Topic.find(params[:id])
  @title = @topic.name
  @posts = @topic.posts.order("updated_at").page(params[:page]).per(10)     
  respond_with(@posts)
end
1 голос
/ 03 мая 2011

И если вы собираетесь использовать «где», вы должны использовать это так:

 Post.where('topic_id' => @topic.id)

Это потому, что тема относится к ассоциации activerecord.Но то, как он хранится на уровне базы данных, отличается.

Что внутри, где почти "sql.

1 голос
/ 03 мая 2011

Вы можете использовать ассоциацию ActiveRecord, чтобы сделать это:

def show
  @topic = Topic.find(params[:id])
  @title = @topic.name
  @posts = @topic.posts
  respond_with(@posts)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...