我有一个rails应用程序,我希望在我的控制器中创建一个查询我的SQLite DB的动作,并返回一个在DB列中有特定字符串的链接。
例如,我有一个links
表,列category
。我希望我的控制器能够获得所有具有movies
字符串的类别。
这个查询是什么样的?我发布了我到目前为止的架构和控制器,但是我被卡住了。
links_controller:
def find_category
Link.where("SELECT category FROM links WHERE links LIKE '%movies%'")
end
链接表:
create_table "links", force: :cascade do |t|
t.string "title"
t.string "url"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "cached_votes_total", default: 0
t.integer "cached_votes_score", default: 0
t.integer "cached_votes_up", default: 0
t.integer "cached_votes_down", default: 0
t.string "avatar"
t.string "category"
end
答案 0 :(得分:1)
这是LIKE
查询的语法。您可能希望使用distinct
只选择一次重复值。
Link.distinct(:category).where("category LIKE ?", "%movies%").pluck(:category)
如果要将其打包在方法
中def find_category
Link.distinct(:category).where("category LIKE ?", "%movies%").pluck(:category)
end
答案 1 :(得分:0)
def find_category
Link.where("SELECT category FROM links WHERE links LIKE '%movies%'")
end
您参考'链接'该查询中有两次,如果不是WHERE category LIKE %movies%