我还不清楚用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是一个优秀的界面,你对它了解的越多,你就会越喜欢它。

09-25 15:41