我们有script/generate migration add_fieldname_to_tablename fieldname:datatype将新列添加到模型的语法.
在同一行,我们是否有用于更改列的数据类型的脚本/生成?或者我应该直接在我的vanilla迁移中编写SQL吗?
我想将列更改datetime为date.
我有一个Backbone View的以下事件.它是一个产品视图 - 有三个标签("All","Top 3","Top 5")
我可以以某种方式将参数传递给方法声明,以便它等效于以下(这不起作用)?
events : {
"click #top-all": "topProducts(1)"
"click #top-three": "topProducts(2)"
"click #top-ten": "topProducts(3)"
},
topProducts(obj){
// Do stuff based on obj value
}
Run Code Online (Sandbox Code Playgroud) 我试图使用underscore.js模板在rails 2.3应用程序中进行模板化,该应用程序没有 jammit作为资产包装器.
这是简单的模板:
<script type="text/template" id="q-template">
<div class="current-body">
<span class="q-index"><%= title %></span>
<span class-"q-text"><%= body %></span>
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
Rails尝试将这些解析为erb变量并抛出ArgumentError.在这种情况下,如何让下划线模板与rails很好地配合?我哪里错了?
我们的postgres生产数据库服务器有一个名为crd_production的数据库,它出自template1模板数据库.顺便提一下,在Ubuntu 12.04框中,初始创建pgcluster时template1和template0数据库的默认编码的默认编码为LATIN1.我删除了template1数据库并使用utf-8编码重新创建它,如下所示.
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+----------+------------+------------+-----------------------
crd_production | deployer | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
(4 rows)
Run Code Online (Sandbox Code Playgroud)
我们最终部署了rails(3.2.11)app并开始使用crd_productiondb作为主数据库.ActiveRecord写入/读取数据时没有问题,但是当我尝试从此psql数据库上的命令行触发任何sql查询时,会发生以下错误 -
crd_production=# select * from users; …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的Ruby数组
q_id = [1,2,3,4,5,...,100]
Run Code Online (Sandbox Code Playgroud)
我想遍历数组并转换成这样的哈希
{
:1 => { #some hash} ,
:2 => { #another hash},
...
:100 => {#yet another hash}
}
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最短和最优雅的方法是什么?
[编辑:to_s.to_sym虽然方便不是我想要它.抱歉不提及它.]
以下是名为"containers"的表格的片段.
Column | Type | Modifiers
--------------------+-----------------------------+---------------------------------
id | uuid | not null
name | character varying(255) |
products | character varying | default '{}'::character varying
Run Code Online (Sandbox Code Playgroud)
如何将products列更改"character varying[]"为相应的修饰符default '{}'::character varying[]?基本上,我想将字符串转换为字符串数组.请注意,products列对字符数没有限制.
alter table "containers" alter "products" type character varying[];
Run Code Online (Sandbox Code Playgroud)
抛出以下错误
错误:列"产品"无法转换为类型字符变化[]
最近,当我试图解释为什么Ruby on Rails是我所在组织的实习生的特定领域语言(DSL)时,我无法清楚地表达我想要的效果.也许我不太了解这个空间来教导细微差别.将他重定向到马丁福勒的文章或谷歌排名的一个InfoQ或其他材料也没有多大帮助.
有人可以解释为什么Rails是一个具有示例/并行情况的DSL,对于那些对代码世界来说相当新的人来说,这不是巫毒的东西吗?理解意识形态也可能有助于详细阐述铁路生态系统的复杂性?
我有一些看似没有逻辑连贯模型的观点.我仍然可以尝试为这些创建虚拟模型(并且也适当地使用路由器),但对我来说似乎不自然.
那么拥有一个Backbone View而没有相应的Model反模式?
专家对此有何评论?
可能重复:
为什么SELECT*被认为有害?
可能是一个数据库nOOb问题.
我们的应用程序有如下表格
表WF
Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| children | text | YES | | NULL | |
| w_id | int(11) | YES | | NULL | |
| f_id | int(11) | YES | | NULL | |
| filterable | tinyint(1) | YES | | 1 | |
| created_at | datetime | …Run Code Online (Sandbox Code Playgroud) JavaScript对象data有一个属性'amplitudeitude',它是来自服务器的字符串串联的位掩码数组.
var data = {
"amplitudes":
"[1,1,1,4,1,1],[1,1,1,1,1,1],[1,1,4,1,9,1],[1,1,9,1,16,1],[1,32,1,1,1,9],[4,4,4,1,1,1]"
}
Run Code Online (Sandbox Code Playgroud)
.
这需要分解为六个独立的数组.我正在使用以下方式组合split()并eval()完成它:
var amplitudes = [];
amplitudes = data.amplitudes.split("],[");
for(var i=0;i<amplitudes.length;i+=1){
(i+1)%2>0 ? amplitudes[i] = amplitudes[i] + "]" : amplitudes[i] = "[" + amplitudes[i];
amplitudes[i] = eval(amplitudes[i]);
}
Run Code Online (Sandbox Code Playgroud)
问题
1)有更优雅和有效的方法吗?我对eval()的使用不太满意,但感觉分裂比正则表达更有效吗?我还没有运行基准测试.
2)我也愿意操纵字段"幅度"存储在数据库中的格式,以便我的整体设计变得更简单.
建议欢迎
我如何在 mysql 中表示这些数据?
16 bit unsigned integer -----Range: 0x0000 - 0xFFF7
64 bit unsigned int. Depicted as xx:xx:xx:xx:xx:xx:xx:xx -----Range: 0x0000 - 0xFFFFFFFFFFFFFFFF
2 bits ----- 00 - None, 01 - Residential Security, 10 - High Security
32 bit unsigned int
Run Code Online (Sandbox Code Playgroud)
我应该将所有内容转换为字符串并在应用程序层转换吗?
Antirez在本文中详细讨论了Hashes的内存优化问题 - http://redis.io/topics/memory-optimization
我有一个生产的应用程序,有大约50个实体(表)和几百万uuids,结合各种实体.我希望大量利用Redis的排序集,列表和哈希.
从记忆和性能的角度来看,将uuids/guids作为redis键(以及集合和列表的成员)(如果有的话)的含义是什么?
我使用postgre作为另一个数据存储区和rails 3.2.9和ruby 1.9.3.
我有一个名为Container列的Rails模型products.它是Postgres和'postgres_ext'gem支持的字符串数组.
GEMFILE的相关部分是:
gem 'rails', '3.2.9'
gem 'pg'
gem 'postgres_ext'
gem 'activerecord-postgres-hstore', git: 'git://github.com/engageis/activerecord-postgres-hstore.git'
Run Code Online (Sandbox Code Playgroud)
迁移的相关部分是:
t.string :products, array: true
Run Code Online (Sandbox Code Playgroud)
我正在我的Container模型中编写一个公共方法,它将产品添加到此数组中.该方法如下所示:
attr_accessible :products
def add_to_products(product)
if products.blank? || products.size == 0 ## product array is either uninstantiated or blank
products = [product.id]
else
unless products.include? product.id
products << product.id
end
end
end
Run Code Online (Sandbox Code Playgroud)
这些是irb/console中的结果:
pry(main)> c = Container.first
=> #<Container id: "2765cc19-98f8-4e42-a1be-538788424ec7", name:....
pry(main)> p = Product.first
=> #<Product id: "319a25ae-87fe-4769-a9de-1a8e0db9e84f", name: ....
pry(main)> c.add_to_products(product)
pry(main)> c.products …Run Code Online (Sandbox Code Playgroud) backbone.js ×3
javascript ×3
mysql ×2
postgresql ×2
ruby ×2
activerecord ×1
arrays ×1
database ×1
dsl ×1
encoding ×1
eval ×1
latin1 ×1
migration ×1
performance ×1
postgres-ext ×1
redis ×1
sql ×1
uuid ×1