Tag: ruby on rails

如何从Ruby 1.9.2降级到Ruby 1.8.7以运行Rails 2.0.2

我想在Ubuntu 10.04操作系统上降级我安装的Ruby版本(Ruby 1.9.2),以便我可以使用适当版本的Ruby 1.8.7来运行Rails 2.0.2。 我正在使用旧版本的Rails用于项目目的。 如果我在Ruby 1.9.2中使用Rails 2.0.2,它会给我一个错误,说无法将Enumerator转换为数组。 我以为我可以使用rvm,但我不确定它是否适合降级。 当我使用已知的命令rvm list时,我在终端中得到以下内容 mgj@pc146724-desktop:~$ rvm list known # MRI Rubies [ruby-]1.8.6[-p399] [ruby-]1.8.6-head [ruby-]1.8.7[-p302] [ruby-]1.8.7-head [ruby-]1.9.1-p243 [ruby-]1.9.1[-p376] [ruby-]1.9.1-p429 [ruby-]1.9.1-head [ruby-]1.9.2-preview1 [ruby-]1.9.2-preview3 [ruby-]1.9.2-rc1 [ruby-]1.9.2-rc2 [ruby-]1.9.2[-p0] [ruby-]1.9.2-head ruby-head # JRuby jruby-1.2.0 jruby-1.3.1 jruby-1.4.0 jruby-1.5.1 jruby-1.5.2 /home/mohnish/.rvm/config/known 我使用命令dpkg -l |在安装的ruby包列表中获得以下内容 grep ruby mgj@pc146724-desktop:~$ dpkg -l | grep ruby ii libdbm-ruby […]

Rails:瘦控制器与胖模型,或者我应该让我的控制器厌食?

我知道之前已经回答了类似的问题 – 例如: 逻辑应该去哪里 在哪里做某些任务等 但是我有一个更具体的问题 – 我应该采取多少这个公理: 保持你的控制器瘦,让你的模特变胖! 这是一个例子: 例如,假设我有多个validation数据源。 一个很好的例子是VIN号码 – 我可以对它进行validation,制造商数据源,DMV的数据源,以及我的本地数据库 – 看看我记录的内容。 所以我有一个名为Vin和vins_controller的模型。 在模型里面我有5种方法: check_against_local_db check_against_dmv check_against_car_maker_1 check_against_car_maker_2等 在我的控制器中保持REST,在动作节目中 – 我有一个简单的case语句,它查看params [:source],并根据指定的源 – 将调用特定的check方法。 现在问题是:我应该保留控制在控制器中调用哪个数据源的逻辑,还是应该将其移动到模型中,然后在控制器中执行类似check_vin(source,vin)的操作? 我应该让我的控制器厌食吗? 编辑 我将此转换为来自@ jay-godse的官方回答(谢谢 – 当时这是一个很好的答案)。 自2010年以来情况发生了很大的变化,这个问题仍然得到了一些看法 – 所以希望这会指出一些人正确的方向并帮助他们正确地组织他们的代码。 开拓者gem解决了问题中提出的问题。

在Heroku上重启后,长时间运行的delayed_job作业保持锁定状态

当重新启动Heroku工作程序时(无论是在命令上还是作为部署的结果),Heroku都会将SIGTERM发送到工作进程。 在delayed_job的情况下, 捕获 SIGTERM 信号 ,然后在当前作业(如果有)停止后工作程序停止执行。 如果工人需要很长时间才能完成,那么Heroku将发送SIGKILL 。 在delayed_job的情况下,这会在数据库中delayed_job一个锁定的作业,该作业不会被另一个工作人员接收。 我想确保工作最终完成(除非出现错误)。 鉴于此,采用这种方法的最佳方法是什么? 我看到两个选择。 但是我想得到其他的意见: 修改delayed_job以在收到SIGTERM时停止处理当前作业(并释放锁定)。 找出(程序化的)方法来检测孤立的锁定作业,然后解锁它们。 有什么想法吗?

如何在Windows中更新ruby

我通过rails安装程序下载了ruby,但我现在想要ruby 2.0.0并且已经下载了它。 我怎么更新我的ruby,因为我这样做 ruby -v 它仍然是ruby版本1.9.3。

将Rails中的主键更改为字符串

所以我有两个模型,State和Acquisition。 State has_many收购。 我觉得51个记录的自动增量整数主键是相当愚蠢的。 所以我将State的模型改为PK(State是两个字母的缩写;我没有在任何地方存储实际的州名: class State < ActiveRecord::Base self.primary_key = "state" has_many :acquisition_histories end 问题是当我创建我的Acquisition模型时,它创建了外键列state_id作为整数。 更具体地说,脚本/生成的迁移确实: class CreateAcquisitions < ActiveRecord::Migration def self.up create_table :acquisitions do |t| t.date :date t.string :category t.text :notes t.references :state t.timestamps end end end 我假设t.references数据类型将其设置为int。 问题是我的Acquisition类上的create方法试图将状态缩写放入表获取的state_id字段中(是的,它在数据库上称为state_id,即使它表示:迁移脚本中的状态)。 该方法不会失败,但它确实在state_id字段中放置了一个0并且记录进入以太。

如何自定义rails activerecordvalidation错误消息以显示属性值

当用户尝试使用已存在的名称创建记录时,我想显示如下错误消息: name “some name” has already been taken 我一直在努力做到: validates_uniqueness_of :name, :message => “#{name} has already been taken” 但是这会输出表名而不是name属性的值

如何使用Ruby编辑或编写现有PDF?

我有几个包含复杂内容的PDF模板文件以及其中的几个空白区域/区域。 我需要能够在这些空白区域中写入文本并将生成的PDF保存在文件夹中。 我搜索了这个问题的答案非常密集,但我没有找到明确的答案。 其中一个更好的解决方案是PDF :: Toolkit ,但它需要购买Adobe Acrobat才能为现有PDF文档添加可替换属性。 PHP世界拥有FPDI ,可用于简单地打开PDF文件并在现有内容上书写/绘制。 这个库有一个Ruby端口 ,但它的最后一次提交发生在2009年初。此项目看起来并不像它被广泛使用和支持。 问题是:在现有PDF上编辑,编写或绘图的Ruby方式有哪些? 这个问题似乎也没有在这里回答。 这些问题是相关的,但并不完全相同: Prawn gem:如何从* existing *文件(.xls)创建.pdf 水印现有pdf与ruby 用于操纵现有PDF的Ruby库 如何使用Ruby Prawn替换现有PDF中的单词?

在Rails中分组选择

真的很简单的问题 – 如何将select(ActionView :: Helpers :: FormOptionsHelper)与分组选项一起使用? 我已经使用了select_tag(ActionView :: Helpers :: FormTagHelper),但我真的希望使用select标签来匹配表单的其余部分。 这可能吗? 我的选项看起来像这样: [ [‘Group 1’, [“Item 1”, “Item 2”, “Item 3”]], [‘Group 2’,[“Item 1”, “Item 2”, “Item 3”, “Item 4”]] ] 我的观点目前是: %tr#expense %td = f.text_field :value = f.hidden_field :type, :value => mode

Ruby on Rails:高级搜索

我无法理解制作高级搜索表单的最佳方法。 我在互联网上有一个很好的搜索,在某些方面,但我无法让他们工作,因为大多数建议已经过时。 我已经问了一个问题,但我认为我太具体了,我无法解决问题。 我想在一个搜索按钮上搜索不同的文本框和下拉框。 EDIT2: projects_controller: def index @projects = Project.all respond_to do |format| format.html # index.html.erb format.json { render :json => @projects } end end def search @project_search = Project.search(params[:search]).order(sort_column + ‘ ‘ + sort_direction).paginate(:per_page => 2, :page => params[:page]) end # GET /projects/1 # GET /projects/1.json def show @project = Project.find(params[:id]) respond_to do […]

Rails 3.1限制用户创建的对象

我想限制用户可以创建的模型对象的数量。 我已经尝试过以下但是没有用。 我理解rails 3.1中发生了一些变化,现在还不确定如何实现。 class User 5, :dependent => :destroy # This doesn’t work end class Things <ActiveRecord::Base belongs_to :user end