请帮助解决问题。
一组帖子和一组标签:
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.integer "user_id"
t.integer "views", default: 0
end
create_table "posts_tags", id: false, force: :cascade do |t|
t.integer "post_id"
t.integer "tag_id"
end
create_table "tags", force: :cascade do |t|
t.string "tagname"
end
SQL:
CREATE TABLE "tags" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "tagname" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
CREATE TABLE "posts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "body" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "user_id" integer, "views" integer DEFAULT 0)
我需要获取附加到帖子的标签数量(使用过的标签)。
我尝试这样做:
@tags_used_count = ::Tag.joins('posts_tags').group('tag_id').distinct.count
但是我得到了错误消息:
在Admin :: Users#index显示中的ActiveRecord :: StatementInvalid /home/kalinin/rails/ZSUM/app/views/layouts/_admin_header_area.html.erb 第28行引出的地方:SQLite3 :: SQLException:没有这样的列:tags.id: SELECT DISTINCT COUNT(DISTINCT" tags"。" id")AS count_id,tag_id AS tag_id FROM" tags" posts_tags GROUP BY tag_id
答案 0 :(得分:0)
您的代码表没有id列。
您应该使用:
create_table "tags", force: :cascade do |t|
t.integer "id"
t.string "tagname"
end
此外,您的帖子表应该有一个id列。即:
create_table "posts", force: :cascade do |t|
t.integer "id"
t.string "title"
t.text "body"
t.integer "user_id"
t.integer "views", default: 0
end
答案 1 :(得分:0)
如果我正确地提出你的问题,下面的事情应该有效。
var resizeTimer;
$(window).load(function(){
$(window).trigger('resize');
});
$(window).resize(function(e){
var windowH = $(window).height(),
windowW = $(window).width();
clearTimeout(resizeTimer);
resizeTimer = setTimeout(function() {
$('#iframe').attr('src','http://tools.fxempire.com/sidebar- quotes.php?instruments=5,10,1,2,4,3&width='+windowW+'&height='+windowH+'&text_color=333&text_hover_color=082F60');
$('#iframe').css({'height':windowH+'px', 'width':windowW+'px'});
}, 250);
})
答案 2 :(得分:0)
试试这个:
::Tag.joins(:posts_tags).group('posts_tags.tag_id').distinct.count