我从xterm和vim做我的Rails dev.
我厌倦了跑步script/generate migration do_whatever,然后通过db/migrate尝试制表符完成拖拽到20091015235018_do_whatever其他5个具有相似时间戳的迁移.
添加钩子以在vim中打开生成的迁移的最佳方法是什么?
我宁愿不在/ usr/lib中攻击Rails的核心,因为我在几个系统中工作,并且可以看到自己想要创建许多这样的钩子.但是,它看起来并不值得插件.
有很多简单的方法来获取生成的文件的名称,但我不确定如何干净地将它挂钩到生成.你怎么看?
Clients有很多Invoices.发票具有number我想通过递增客户的先前发票号来初始化的属性.
例如:
@client = Client.find(1)
@client.last_invoice_number
> 14
@invoice = @client.invoices.build
@invoice.number
> 15
Run Code Online (Sandbox Code Playgroud)
我希望将此功能纳入我的Invoice模型中,但我不确定如何操作.这就是我想象的代码:
class Invoice < ActiveRecord::Base
...
def initialize(attributes = {})
client = Client.find(attributes[:client_id])
attributes[:number] = client.last_invoice_number + 1
client.update_attributes(:last_invoice_number => client.last_invoice_number + 1)
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我打电话时attributes[:client_id] 没有设置@client.invoices.build.
发票的client_id初始化方式和时间,以及何时可以使用它来初始化发票number?我可以将这个逻辑放入模型中,还是必须将其放入控制器中?
文本区域助手,我如何将字符串的最大长度设置为100.
在ROR中的文本区域助手中是否有任何最大长度属性.
代码会帮助我.谢谢
我是Java的新手,并试图弄清楚如何构建程序的文件.
我已经下载了一个库(jnotify),它包含jarJava源代码的a 和zip.
到目前为止,我只是通过将jnotify的源提取到程序的顶级目录来完成我的程序.所以jnotify的源文件到处都是,我的程序代码在子目录中.
$ ls /path/to/project
CHANGELOG
inotify-syscalls.h
jnotify_64bit.dll
jnotify.dll
libnotify.so
my-projects-actual-files/
net/
README
... etc
Run Code Online (Sandbox Code Playgroud)
我像这样导入jnotify:
# myprogram/program.java
import net.contentobjects.jnotify.*;
... code body here ...
Run Code Online (Sandbox Code Playgroud)
并通过明确设置运行它java.library.path:
$ java -Djava.library.path=. myprogram/Program
Run Code Online (Sandbox Code Playgroud)
这感觉不对,但我不知道Java组织源文件和库的方式是什么.
我怎样才能结束我的程序结构,以便jnotify生活在类似lib/jnotify但可以导入,编译和合理运行的东西中?
我的Javascript不是很划清楚,我正在努力覆盖提供的功能rails.js.
我想a[data-confirm]使用jQuery UI模式对话而不是vanilla javascript 来修改处理方式confirm().
相关功能rails.js是allowAction(element).如果我在另一个文件中定义它,我可以成功地从firebug控制台调用它,但rails.js仍然从具有data-confirm属性的锚点调用该版本.
我认为这是因为整个rails.js文件包含在:
(function($) {
...
})( jQuery );
Run Code Online (Sandbox Code Playgroud)
是否有一种合理的方法来覆盖此功能,而无需修改提供的功能rails.js?
编辑:
在呼叫rails.js到allowAction被包裹在一个.live呼叫:
$('a[data-confirm], a[data-method], a[data-remote]').live('click.rails', function(e) {
var link = $(this);
if (!allowAction(link)) return false;
if (link.attr('data-remote')) {
handleRemote(link);
return false;
} else if (link.attr('data-method')) {
handleMethod(link);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我也尝试过包括我之前和之后的javascript rails.js,但无济于事.
编辑:
所以,如果我打电话,.die('click.rails')我可以重新定义整个click.rails事件,但不会调用原始 …
我有以下枚举和表:
CREATE TYPE public.event_type as ENUM (
'eat_apple',
'eat_banana',
'brush_teeth'
);
CREATE TABLE public.events (
id integer not null,
type public.event_type,
created_at timestamp without time zone
);
Run Code Online (Sandbox Code Playgroud)
我正在针对此表编写很多查询,这些查询仅涉及事件类型 (eat_apple和eat_banana)的子集。
我可以用一个WHERE type IN ('eat_banana', 'eat_apple')子句编写这些查询中的每一个,但是将来很有可能我需要添加一个eat_pear事件类型。
Postgres 中有哪些可用的抽象来存储这些枚举值的子集,以便在整个查询中重用,将来可以扩展该子集,以便现有查询考虑到这一点?
我正在努力弄清楚为什么vim没有复制到系统缓冲区.
这是我的工作流程:
vim asd
y1y
:q
vim qwe
p
Run Code Online (Sandbox Code Playgroud)
在computerA和computerB上,这可以按照我的要求工作:从文件asd中拉出的行放入文件qwe.
在computerC上,这不起作用.
所有系统都运行Ubuntu 8.04.computerA安装了vim-full软件包,computerB和computerC安装了vim软件包.computerA安装了xorg,正在使用fluxbox窗口管理器,并在本地访问.computerB和computerC没有X,我正在抨击它们.
我已经做了很多阅读,并认为这是因为computerC是用-clipboard编译的,但是我在所有三台计算机上都运行了vim --version,只有computerA是用+ clipboard编译的.
我错过了一些明显的东西吗 我相信用户的.vimrc和全局vimrc文件是相同的.我可以发布vim --version的输出和vimrc文件的内容,如果这会有所帮助.
我正在向summary现有表中添加一个新列。它将包含来自列的 HTML 的纯文本片段body。
我想在运行迁移时为所有现有电子邮件创建摘要。但是,我不知道如何在迁移中使用 strip_tags。
这是我到目前为止所拥有的:
class AddSummaryToEmails < ActiveRecord::Migration
self.up
add_column :emails, :summary, :string, :limit => 100
Email.reset_column_information
Emails.all.each do |email|
email.update_attributes(:summary => strip_tags(email.body))
end
end
...
end
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用:
undefined method 'strip_tags' for #<ActiveRecord::ConnectionAdapters::MysqlAdapter:0xb6e29be8>
如何在迁移中访问 strip_tags 方法?我知道我可以运行正则表达式或其他类似的解决方法,但仍然很想知道如何执行此操作以备将来使用。
谢谢
我不确定我的Ruby语法.
我想定义一个我可以这样调用的方法:client.invoices.average_turnaround.所以我的average_turnaround方法需要使用一组ActiveRecord对象.
到目前为止,这是我的代码:
class Invoice < ActiveRecord::Base
...
def self.average_turnaround
return self.map(&:turnaround).inject(:+) / self.count
end
end
Run Code Online (Sandbox Code Playgroud)
所以我试图找出每张发票的周转时间总和,然后除以发票总数.
Ruby抱怨没有map定义方法Class.我原以为self是一个Array.
如何编写一个适用于该集合Invoices并使用该map函数的方法?我哪里错了?
请考虑以下代码:
class Dog
attr_accessor :name, :color
def initialize(name, color)
end
end
Run Code Online (Sandbox Code Playgroud)
在Ruby对象中,是直接访问实例变量(即@name = name)还是使用setter/getter方法(即name = name)的约定?
前者对我来说更清楚,但如果你实现自己的setter/getter方法(例如同时增加一个类变量),那么你最终必须使用两种方法(即@name = name ; color = color).
Ruby社区中的惯例是什么?我应该如何编写代码以便将其他人阅读?
ruby ×3
migration ×2
activerecord ×1
attributes ×1
buffer ×1
collections ×1
conventions ×1
copy-paste ×1
dry ×1
enums ×1
hook ×1
html ×1
java ×1
jquery ×1
libraries ×1
map ×1
model ×1
overriding ×1
plugins ×1
postgresql ×1
strip-tags ×1
textarea ×1
vim ×1
x11 ×1