我还不清楚用sequel运行原始sql查询的正确方法。
目前我正在尝试:
DB.fetch("SELECT * FROM zone WHERE dialcode = '#{@dialcode}' LIMIT 1") do |row|
@zonename = row
end
如何以原始sql的形式运行查询,然后像普通sql一样访问结果?
if @zonename.name = "UK"
最佳答案
我有几个可能有用的指针:
你可以简单地:
@zonename = DB.fetch("SELECT * FROM zone WHERE dialcode = ? LIMIT 1", @dialcode).first
注意:您忽略了这样一个事实,即可能会有更多符合条件的结果。如果您希望返回多个可能的行,那么您可能希望通过执行…
@zonename = DB.fetch("SELECT * FROM zone WHERE dialcode = ? LIMIT 1", @dialcode).all
并处理所有这些。
返回集是散列。如果
@zonename
指向其中一个记录,则可以@zonename[:column_name]
引用名为“列名”的字段。你不能做
@zonename.colum_nname
(实际上你可以用一些元编程的helper方法来修饰@zonename
,但是我们暂时忽略这一点)。sequel是一个优秀的界面,你对它了解的越多,你就会越喜欢它。