Ruby on rails 将字符串转换为XXX
在这方面,我可以做到:Ruby on rails 将字符串转换为XXX,ruby-on-rails,ruby,Ruby On Rails,Ruby,在这方面,我可以做到: User.where{id.eq "2" | admin.eq true} 质疑。我想知道我是否可以转换一个字符串,这是一个如下条件: string = "id: 2" 或 并运行: User.where{string} 或 结果不是散列。我该怎么做呢?您需要的是散列,而不是字符串。你可以这样使用它 hash = {id: 2} User.where(hash) string = "id = 2" User.where(string) string = "{id
User.where{id.eq "2" | admin.eq true}
质疑。我想知道我是否可以转换一个字符串,这是一个如下条件:
string = "id: 2"
或
并运行:
User.where{string}
或
结果不是散列。我该怎么做呢?您需要的是
散列
,而不是字符串
。你可以这样使用它
hash = {id: 2}
User.where(hash)
string = "id = 2"
User.where(string)
string = "{id: 2}"
User.where(eval string)
如果你真的想用string
你可以这样做
hash = {id: 2}
User.where(hash)
string = "id = 2"
User.where(string)
string = "{id: 2}"
User.where(eval string)
如果要执行字符串,可以使用eval
。那么就是这样,
hash = {id: 2}
User.where(hash)
string = "id = 2"
User.where(string)
string = "{id: 2}"
User.where(eval string)
NB要使用下面的变体,应该阅读Google查询“ruby eval是邪恶的”的前五页输出
User.where(instance_eval("{#{string}}"))
是的,但关键是如何将字符串转换为条件?(只是开玩笑的名字)。您知道
User.where(id:2)
是正确的语法,如果字符串是“id:2”
,我们无法更改它,那么如何让User.where(string)
运行。有没有这样的方法:User.where(string.to_xxx)
或User.where(xxx(string))
使用此链接改进您的问题:顺便说一句,xxx被称为“哈希”。@SergioTulentsevJSON.parse
需要有效的JSON,不是吗?:JSON.parse“{id:2}”#⇒ JSON::ParserError:784:在{id:2}处出现意外标记
I由于实例的评估而被否决;我觉得你的警告太弱了。这个答案确实需要一个明确的语句,比如“不要这样做!它会破坏你的应用程序的安全性”@WayneConrad你可以想什么就想什么,也可以对每个包含完全有效、有用的语言约束的答案投否决票,这些约束是Matz引入的,目的是使ruby尽可能强大。我从来没有加入过仇恨Eval的宗教派别;在某些情况下,这是伟大的。进一步思考后,我希望我没有投反对票。我仍然认为如果有一个更强烈的警告,答案会更好,但否决票是严厉的,我道歉。@WayneConrad绝对没有什么可道歉的;因此,由人类为人类创造,幸运的是,我们所有人都有不同的观点(否则生活会太无聊)。重要的是,答案仍然存在,并且(目前)分数为-1
,这反过来意味着:a)所描述的实现方法存在,(二)主要不受社会人士欢迎。我个人很欣赏任何意见分享,不管是正面的还是负面的。谢谢你的关心。