我试图创建一个查询,找到属于同一主题id的所有帖子。我相信我在正确的轨道上,但是所有@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
Post模型:
class Post < ActiveRecord::Base
belongs_to :topic, :touch => true
accepts_nested_attributes_for :topic
attr_accessible :name, :title, :content, :topic, :topic_attributes
end
我建议您使用模型中的关联来获取所有帖子。你可以这样做:
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
您可以使用ActiveRecord关联来完成此操作:
def show
@topic = Topic.find(params[:id])
@title = @topic.name
@posts = @topic.posts
respond_with(@posts)
end
如果你要使用" where "你应该这样使用:
Post.where('topic_id' => @topic.id)
这是因为topic引用了activerecord关联。但是它在db级别的存储方式是不同的。
sql.