我试图用DataMapper选择随机数据集,但似乎没有这样的功能支持.
例如,我有一组数据:
+-------------------+
| ID | Name | Value |
+-------------------+
| 1 | T1 | 123 |
| 2 | T2 | 456 |
| 3 | T3 | 789 |
| 4 | T4 | 101 |
| ----------------- |
| N | Tn | value |
Run Code Online (Sandbox Code Playgroud)
可能有很多数据,超过10万行.
我需要将数据映射到对象:
class Item
include DataMapper::Resource
property :id, Serial
property :name, String
property :value, String
end
Run Code Online (Sandbox Code Playgroud)
所以,问题是:如何从表中选择随机数据?
SQL中的类似查询将是:
SELECT id, name, value FROM table ORDER BY RAND() LIMIT n;
Run Code Online (Sandbox Code Playgroud) 我最近一直在玩flog,它是一个非常好的工具,可以为 ruby 应用程序生成代码复杂性报告。在项目代码库上运行的结果是,
flog您会得到类似于以下内容的输出:
1272.3: flog total
7.3: flog/method average
62.2: MyClass#foobar lib/myclass#foobar:123
... more similar lines ...
Run Code Online (Sandbox Code Playgroud)
上面的示例提供了方法的分数,并引用了定义该方法的源代码中的确切行号。这可以是常规实例/类方法或任何其他“动态”方法,例如。耙子任务等等。
因此,目标是从源文件中提取一段代码(很可能是一个方法),该代码以 flog 输出中定义的行号开头。然后,该代码片段可以在某些 Web UI 中用于显示各种代码指标(基于其他工具,例如flay)和/或存储在数据库中。据我所知,这个任务涉及将 ruby 代码解析为 AST,然后遍历树找到相应的起始行并找出结束行号。我已经用这个库做了一些实验 - https://github.com/whitequark/parser,大部分时间都有效,但获得正确的结果有点棘手。
还有其他解决方案可以从用 ruby 编写的源文件中快速提取方法代码吗?
Rails应用程序最常见的任务是什么?我的意思是,例如,对于小型和简单的网站,人们通常会选择PHP,因为它很容易维护和部署,大多数托管平台都支持您的所有需求.但我对人们通常用Rails产生的东西很感兴趣.什么样的应用程序?
我无法找到在特定上下文中仅获取必要的模型字段的方法.让我们说我有一个巨大的模型,有大约30个领域(属性).但是出于搜索目的,我只需要几个.
例:
class Foo
include DataMapper::Resource
property :id, Serial
property :title, String, :length => 256
property :description, Text
property :url, String, :length => 4096
property :city, String, :length => 64
property :country, String, :length => 64
property :state, String, :length => 64
property :created_at, Time
property :updated_at, Time
property :expires_at, Time
... etc fields ...
end
Run Code Online (Sandbox Code Playgroud)
因此,对于前端(Web应用程序),大多数字段都被使用.但对于搜索,我只需要说:标题,:城市,:州.它很容易查询数据
items = Foo.all(:title.like => 'Some stuff')
Run Code Online (Sandbox Code Playgroud)
然后我需要将获取的数据打包到JSON中.据我所知,有一个名为dm-serialize的DataMapper模块可以处理所有操作.
最后,我做输出包:
response = {:error => 0, :count => items.length, :data => items}
response.to_json
Run Code Online (Sandbox Code Playgroud)
但输出项目包含所有字段,而我只需要获取其中的一些字段.由于某些原因,延迟加载不起作用.
问题是:如何指定要选择的模型字段?