I don't know if there is a specific reason you're using has_many :through this way, because what you have is a classic habtm situation. has_many :through is typically used when your join table represents a model, where as habtm uses only a table containing id columns, such as what you have.
why not try:
@threads = @tag.posts.find(:all, ..., :include => :tags )
where your models are
class Post < ActiveRecord::Base has_and_belongs_to_many :tags, :join_table => "taggings" end
class Tag < ActiveRecord::Base has_and_belongs_to_many :posts, :join_table => "taggings" end
and no Tagging model