小编nfm*_*nfm的帖子

添加钩子到脚本/生成迁移

我从xterm和vim做我的Rails dev.

我厌倦了跑步script/generate migration do_whatever,然后通过db/migrate尝试制表符完成拖拽到20091015235018_do_whatever其他5个具有相似时间戳的迁移.

添加钩子以在vim中打开生成的迁移的最佳方法是什么?

我宁愿不在/ usr/lib中攻击Rails的核心,因为我在几个系统中工作,并且可以看到自己想要创建许多这样的钩子.但是,它看起来并不值得插件.

有很多简单的方法来获取生成的文件的名称,但我不确定如何干净地将它挂钩到生成.你怎么看?

migration hook plugins ruby-on-rails rails-generate

3
推荐指数
1
解决办法
724
查看次数

当我在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?我可以将这个逻辑放入模型中,还是必须将其放入控制器中?

attributes model initialization ruby-on-rails dry

2
推荐指数
2
解决办法
1万
查看次数

Text Area helper,如何设置maxlength

文本区域助手,我如何将字符串的最大长度设置为100.
在ROR中的文本区域助手中是否有任何最大长度属性.

代码会帮助我.谢谢

html ruby textarea ruby-on-rails

2
推荐指数
1
解决办法
971
查看次数

我在哪里将外部Java库放在程序的目录结构中?

我是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但可以导入,编译和合理运行的东西中?

java directory-structure libraries

2
推荐指数
1
解决办法
7293
查看次数

如何在不修改提供的rails.js的情况下覆盖Rails 3不显眼的javascript函数?

我的Javascript不是很划清楚,我正在努力覆盖提供的功能rails.js.

我想a[data-confirm]使用jQuery UI模式对话而不是vanilla javascript 来修改处理方式confirm().

相关功能rails.jsallowAction(element).如果我在另一个文件中定义它,我可以成功地从firebug控制台调用它,但rails.js仍然从具有data-confirm属性的锚点调用该版本.

我认为这是因为整个rails.js文件包含在:

(function($) {
...
})( jQuery );
Run Code Online (Sandbox Code Playgroud)

是否有一种合理的方法来覆盖此功能,而无需修改提供的功能rails.js

编辑:

在呼叫rails.jsallowAction被包裹在一个.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事件,但不会调用原始 …

jquery overriding unobtrusive-javascript ruby-on-rails-3

2
推荐指数
1
解决办法
3216
查看次数

存储一组 postgres 枚举值以供重用的正确抽象是什么?

我有以下枚举和表:

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_appleeat_banana)的子集。

我可以用一个WHERE type IN ('eat_banana', 'eat_apple')子句编写这些查询中的每一个,但是将来很有可能我需要添加一个eat_pear事件类型。

Postgres 中有哪些可用的抽象来存储这些枚举值的子集,以便在整个查询中重用,将来可以扩展该子集,以便现有查询考虑到这一点?

postgresql enums

2
推荐指数
1
解决办法
113
查看次数

Vim复制粘贴到系统缓冲区的行为不符合预期

我正在努力弄清楚为什么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文件的内容,如果这会有所帮助.

x11 vim buffer copy-paste

1
推荐指数
1
解决办法
9616
查看次数

如何运行使用 strip_tags 的数据修改迁移?

我正在向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 方法?我知道我可以运行正则表达式或其他类似的解决方法,但仍然很想知道如何执行此操作以备将来使用。

谢谢

migration ruby-on-rails strip-tags

1
推荐指数
1
解决办法
1526
查看次数

如何在ActiveRecord类方法中使用'map'方法?

我不确定我的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函数的方法?我哪里错了?

ruby collections activerecord ruby-on-rails map

1
推荐指数
1
解决办法
3914
查看次数

在Ruby中访问对象中的实例变量的常规方法是什么?

请考虑以下代码:

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 conventions instance-variables

1
推荐指数
1
解决办法
572
查看次数