我在Rails应用程序上使用了一个postgreSQL数据库。我在<ul class="scroll-nav-x scroll-tabs-x tabs clearfix">
<li class="active" rel="tab1">All</li>
<li rel="tab2">Others</li>
</ul>
<div class="tab-container large">
<div id="tab1" class="tab-content" style="display: block;">
<div class="row">
Dummy
</div>
</div>
</div>
和Slots
之间建立了m对n的关系。我需要做的最后一件事是找到与Hashtags
Slots
匹配的Hashtags
这是schema.rb
url params
我想显示由 create_table "hashtags", force: :cascade do |t|
t.string "value"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "hashtags_slots", id: false, force: :cascade do |t|
t.bigint "hashtag_id", null: false
t.bigint "slot_id", null: false
t.index ["hashtag_id"], name: "index_hashtags_slots_on_hashtag_id"
t.index ["slot_id"], name: "index_hashtags_slots_on_slot_id"
end
create_table "slots", force: :cascade do |t|
t.string "slot_name"
t.string "file_path"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["slot_name"], name: "index_slots_on_slot_name"
end
填充的插槽的索引,这些索引具有通过slots
给出的主题标签之一。 Hashtags的值可以包含1个或多个字符串,如下所示:
params[:hashtags]
这是在hashtags = "NetEnt PlayNGo Novomatic"
控制器的index
动作中
Slot
一种方法应该如何
if(params[:slot_name])
@slots = Slot.where(slot_name: params[:slot_name]).paginate(page: params[:page])
elsif(params[:hashtags])
@slots = slotsWithAtLeastOneOfThose(params[:hashtags])
else
@slots = Slot.all.paginate(page: params[:page])
end
给我所有slotsWithAtLeastOneOfThose(hashtags)
slots = ...
return slots
end
变量中至少有一个Slots
的{{1}}
考虑那些关系:
插槽表:
hashtag
标签表:
hashtags
Hashtags_Slots表如下所示:
id: 1 slot_name: Book of Dead
id: 2 slot_name: Big Win Cat
id: 3 slot_name: Big Bad Wolf
现在是方法
id: 1 value: PlayNGo
id: 2 value: Fun
id: 3 value: NetEnt
id: 4 value: MicroGaming
id: 5 value: NotFun
应该给我所有slot_id hashtag_id
1 1
1 2
2 2
2 3
2 5
3 4
3 5
和#slotsWithAtLeastOneOfThose("PlayNGo NetEnt")
和Slots
在这种情况下
PlayNGo
答案 0 :(得分:0)
请检查以下查询以获取具有特定哈希标签值的广告位
if(params[:slot_name])
@slots = Slot.where(slot_name: params[:slot_name]).paginate(page: params[:page])
elsif(params[:hashtags])
@slots = Slot.joins(:hashtags).where("hashtags.value LIKE ?", "%#{params[:hashtags]}%")
else
@slots = Slot.all.paginate(page: params[:page])
end