Articles of ruby on rails

Rails:rake db:test:准备Vs rake测试:准备

作为指南,用于准备测试数据库的命令是 bundle exec rake db:test:prepare 但是,我发现以下命令也适用于我并为我创建了测试数据库。 bundle exec rake test:prepare 如果是的话,想知道这是否是一个有效的命令。 我在哪里可以找到文档。 在rails 3.2.8测试rails 3.2.8

获取当前操作的路径/ url,包括查询字符串? (导轨)

简单的问题 – 如何获取包含查询字符串的当前操作的路径或完整URL? 我希望将它保存到会话变量,如下所示: def show @thingy = Thingy.find(params[:id]) session[:some_var] = current_url … end 目前我正在做以下事情,但它似乎有点笨拙(特别是单独指定查询字符串参数): def show @thingy = Thingy.find(params[:id]) session[:some_var] = thingy_path(@thingy, :q1 => params[:q1], :q2 => params[:q2]) … end

ActiveRecord – “范围”中的“第一个”方法返回多个记录

我是Rails的新手,我有一个奇怪的问题。 这是一个代码示例: class News { where(pinned: true).first } end 如果有“固定”标志的记录没有问题,当我调用News.pinned返回单个记录时。 我在日志中看到了这个查询: SELECT `news`.* FROM `news` WHERE `news`.`pinned` = 1 ORDER BY `news`.`id` ASC LIMIT 1 但是如果没有带有“固定”标志的记录,当我调用News.pinned ,将执行下两个查询: SELECT `news`.* FROM `news` WHERE `news`.`pinned` = 1 ORDER BY `news`.`id` ASC LIMIT 1 SELECT `news`.* FROM `news` 谢谢!

虚荣,Rails 3和Heroku

我正在努力让Vanity与Heroku和我的Rails 3应用程序很好地配合。 目前,使用Pow和本地Redis服务器在本地工作正常,但是当我使用RedisToGo插件推送到Heroku时,似乎没有任何东西让服务器运行,我只是得到错误: getaddrinfo: Name or service not known 。 这是我的config / vanity.yml文件: staging: adapter: redis host: 和我的config / initializers / redis.rb: uri = URI.parse(ENV[“REDISTOGO_URL”]) REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password) 我也尝试使用实际的redis://:actualpassword@actualserver.com:9274并且它给出了相同的错误。 我也尝试过使用和不使用redis:// 。 有没有人让Vanity和Heroku和Rails 3一起工作? 我错过了一些非常明显的东西吗? 到目前为止,我的谷歌已经失败了。

什么是在rails 3.1(pdf表单,xls文件等)中存储静态资产(文件)的最佳位置

我有一堆静态资产(不是jpg,css和js) – 而是像pdf表单这样的文件,我需要向用户提供xls。 他们很少改变。 之前我曾经将它们存储在公共文件夹中,但随着rails 3.1中资产管道的引入,现在存储文件的最佳位置是什么? 谢谢

在Rails中使用titleize作为首字母缩略词

我用缩写词定义了一些活跃的记录。 RvPark(休闲车公园)。 当我为class级名称命名时,我会得到’Rv Park’。 它应该是’RV Park’。 有没有一个很好的方法来做到这一点? 由于这个模型与其他模型共享代码,我需要创建一个通用的解决方案,但我无法想出一个。 我确实看到了对此的讨论,但没有一个解决方案对我有用。 任何见解都表示赞赏。 https://rails.lighthouseapp.com/projects/8994/tickets/2944-titleize-doesnt-take-all-uppercase-words-into-account

ActiveRecord的:: UnknownAttributeError?

我只是将应用程序推送到生产Heroku环境。 基本上有一个Bus模型,它有一个seats属性 class Bus < ActiveRecord::Base attr_accessible :seats, # other attributes end 现在我有一个JavaScript前端,POST的JSON用于新总线到buses#create action。 我尝试创建总线时,ActiveRecord遇到错误: : POST www.busables.com/buses dyno=web.1 queue=0 wait=5ms service=65ms status=500 bytes=728 : : ActiveRecord::UnknownAttributeError (unknown attribute: seats): : app/controllers/buses_controller.rb:31:in `new’ : app/controllers/buses_controller.rb:31:in `create’ 参数正在达到控制器动作。 我可以记录它们,然后我得到了以下内容: The bus parameters received: {“seats”=>”24”, “departure_time(1i)”=>”2011”, “departure_time(2i)”=>”11”, “departure_time(3i)”=>”25”, “departure_time(4i)”=>”16”, “departure_time(5i)”=>”15”, “route_attributes”=>{“summary”=>”N51”, “beginning_address”=>”A place”, “terminal_address”=>”Another place”, “distance”=>26362, “duration”=>1753}} […]

帮助者“fields_for”无法正常工作

我正在使用嵌套属性,但我的视图中未加载字段。 有人知道我错过了什么吗? Rails 3.1,Ruby 1.9.2 型号1: class Traditions::Material :destroy validates_presence_of :title accepts_nested_attributes_for :material_asset end 型号2: class Traditions::MaterialAsset < ActiveRecord::Base belongs_to :material has_attached_file :asset validates_attachment_presence :asset end 查看(HAML): = form_for @material, :html => {:class => ‘form’, :multipart => true} do |f| = errors_for @material .field = f.label :title = f.text_field :title .field = f.label :description = […]

Capistrano部署Wipes数据库?

我已经设法使用Capistrano将我的应用程序部署到生产中,但我不明白如何处理我的数据库。 我正在使用颠覆和乘客。 当我运行cap deploy时,新部署会重新启动所有内容。 它清除了添加到数据库的数据。 显然,必须有一个解决方案,但我很惊讶没有在网上找到关于如何处理这个问题的任何事情。 我已经阅读了Capistrano文档和许多教程。 我能找到的最好的是Advanced Rails食谱书,它讨论了如何将用户生成的内容放入共享目录中,但这并不完全正确。 在使用Capistrano进行部署时,如何处理数据库?

当某些东西存储为数组时,Rails where子句

我正在使用PG数据库运行rails 4.2。 我有一个存储在数据库中的项目,如(model Item ): :something => [“1”, “2”, “3”] 我想得到Item.where(:something.include? => “3”) 显然这不起作用 – 但是你打算如何在rails中做到这一点?