过去10个小时我一直在尝试这样做,但它没用。
例如:
Event.where(login_screen: Time.now-8.days ..Time.now)
我有一个事件表,login_screen
是列名之一。我在下拉菜单中列出了这些内容,并希望将事件名称作为变量。它位于请求参数中,如下所示:params[:segmentation][:first_event]
。当我试图给它时:
Event.where(params[:segmentation][:first_event] Time.now-8.days ..Time.now)
......它没有用。我尝试使用to_sym
,但这也没有帮助。
如何将变量用作符号?
另一个问题:
:hello
和hello:
之间的区别是什么?
答案 0 :(得分:2)
它是使用符号作为键的ruby哈希的替代语法
Event.where(login_screen: Time.now-8.days ..Time.now)
与
相同Event.where(:login_screen => Time.now-8.days ..Time.now)
因此,如果您将密钥存储在变量中,则需要使用' hash rocket'语法:
Event.where(params[:segmentation][:first_event] => Time.now-8.days ..Time.now)
答案 1 :(得分:0)
这些是在where子句中传递参数的不同方法: -
User.where(["name = ? and email = ?", "Joe", "joe@example.com"])
User.where(["name = :name and email = :email", { name: "Joe", email: "joe@example.com" }])
User.where("name = :name and email = :email", { name: "Joe", email: "joe@example.com" })
使用哈希: -
User.where({ created_at: (Time.now.midnight - 1.day)..Time.now.midnight })
User.where({ name: ["Alice", "Bob"]})
User.where({ name: "Joe", email: "joe@example.com" })