我正在使用以下内容查询我的ActiveRecords:
result = MyObj.where({customer: current_id}).as_json()
返回了两列:
result = [{id:1, name: "david", last_name: "Smith:"}]
我想创建第三列(不会保存到数据库中),如下所示:
result = [{id:1, name: "David", last_name: "Smith:", full_name:"David Smith"}]
这在WHERE查询中是否可行?
答案 0 :(得分:2)
向MyObj模型添加full_name
方法,然后将methods: :full_name
传递给as_json
方法:
class MyObj
def full_name
"{name} #{last_name}"
end
end
result = MyObj.where({customer: current_id}).as_json(methods: :full_name)
来自the documentation for as_json
:
要在模型上包含一些方法调用的结果,请使用:methods:
user.as_json(methods: :permalink) # => { "id" => 1, "name" => "Konata Izumi", "age" => 16, # "created_at" => "2006/08/01", "awesome" => true, # "permalink" => "1-konata-izumi" }
或者,您可以覆盖模型上的as_json
以默认包含full_name
:
class MyObj
def full_name
"{name} #{last_name}"
end
def as_json(options={})
super({methods: :full_name}.merge options)
end
end
答案 1 :(得分:1)
不确定。覆盖模型中的方法......
class MyObj < ActiveRecord::Base
def full_name
"#{name} #{last_name}"
end
def as_json options={}
{
id: id,
name: name,
last_name: last_name,
full_name: full_name
}
end
end
答案 2 :(得分:0)
快速而肮脏只是操纵你得到的结果
try:
proID = columnLookup(URL, "Product ID:")
fh.write(str(proID).strip())
fh.write("\t")
if len(PID[pageNo - 1]) < 8:
fh.write("\t")
except:
fh.write("\t\t")
但要注意零值。