1、在模型中动态生成代码的函数module_eval
有时需要在模型中动态的生成一些函数,或需要重复的生成类似的函数,则用module_eval可以在很大程度上的优化代码
例如,在模型中要定义:
link_to_firm_function,link_to_contact_function,link_to_order_function,
用一般的方法,
def link_to_firm_function
..
end
需要重复定义三次,而用module_eval则可简化为一次全部定义:
%w{firm contact order}.each do |obj|
module_eval %{
def link_to_#{obj}_function(p1,p2)
.....
end
}
end
2、oracle中的临时表:dual
3、Oracle中的分页
方法1:select * from (select ROWNUM rn ,t.* from tablename t where ROWNUM<=20) where rn>=11;
方法2:使用分析函数ROW_NUMBER实现分页
select * from (select ROW_NUMBER() OVER (ORDER BY id) rn,t.* from tablename t) where rn between 11 and 20;
4、在Oracle中搜索重复的记录
select id,count(*) from tablename group by id having count(*)>1;
5、列出表格中的所有列
例如数据库中有个表为:tables,其对应的模型为Table
则,列出表中所有的列名:
for column in Table.content_columns
puts column.human_name
end
列出各列所对应的值
t = Table.find(1)
for column in Table.content_columns
puts t.send(column.name)
end
有时需要在模型中动态的生成一些函数,或需要重复的生成类似的函数,则用module_eval可以在很大程度上的优化代码
例如,在模型中要定义:
link_to_firm_function,link_to_contact_function,link_to_order_function,
用一般的方法,
def link_to_firm_function
..
end
需要重复定义三次,而用module_eval则可简化为一次全部定义:
%w{firm contact order}.each do |obj|
module_eval %{
def link_to_#{obj}_function(p1,p2)
.....
end
}
end
2、oracle中的临时表:dual
3、Oracle中的分页
方法1:select * from (select ROWNUM rn ,t.* from tablename t where ROWNUM<=20) where rn>=11;
方法2:使用分析函数ROW_NUMBER实现分页
select * from (select ROW_NUMBER() OVER (ORDER BY id) rn,t.* from tablename t) where rn between 11 and 20;
4、在Oracle中搜索重复的记录
select id,count(*) from tablename group by id having count(*)>1;
5、列出表格中的所有列
例如数据库中有个表为:tables,其对应的模型为Table
则,列出表中所有的列名:
for column in Table.content_columns
puts column.human_name
end
列出各列所对应的值
t = Table.find(1)
for column in Table.content_columns
puts t.send(column.name)
end