【问题标题】:Rails: Use a variable as a hash keyRails:使用变量作为哈希键
【发布时间】:2014-10-16 09:17:39
【问题描述】:

过去 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,但这也无济于事。

如何使用变量作为符号?

另一个问题:

:hellohello: 有什么区别?

【问题讨论】:

    标签: ruby-on-rails symbols


    【解决方案1】:

    这些是在 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" })
    

    【讨论】:

      【解决方案2】:

      它是使用符号作为键的 ruby​​ 哈希的替代语法

      Event.where(login_screen: Time.now-8.days ..Time.now)
      

      相同
      Event.where(:login_screen => Time.now-8.days ..Time.now)
      

      因此,如果您将密钥存储在变量中,则需要使用“哈希火箭”语法:

      Event.where(params[:segmentation][:first_event] => Time.now-8.days ..Time.now)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 2017-03-23
        相关资源
        最近更新 更多