Tag: ruby在轨道 3

使用send_file从Amazon S3下载文件?

我在我的应用程序中有一个下载链接,用户应该能够下载存储在s3上的文件。 这些文件将公布在像这样的url上 https://s3.amazonaws.com/:bucket_name/:path/:to/:file.png 下载链接命中我的控制器中的一个操作: class AttachmentsController < ApplicationController def show @attachment = Attachment.find(params[:id]) send_file(@attachment.file.url, disposition: 'attachment') end end 但是当我尝试下载文件时出现以下错误: ActionController::MissingFile in AttachmentsController#show Cannot read file https://s3.amazonaws.com/:bucket_name/:path/:to/:file.png Rails.root: /Users/user/dev/rails/print Application Trace | Framework Trace | Full Trace app/controllers/attachments_controller.rb:9:in `show' 该文件完全存在,可以在错误消息的url处公开访问。 我如何让用户下载S3文件?

在Rails 3中突出显示当前页面的最佳方法是什么? – 有条件地应用CSS类来链接

对于下面的代码: <%= link_to "Some Page", some_path %> 如何使用current_page?‎ helper方法应用css类current ? 或者如果有其他更好的方法可用?

Rails:validation3列的唯一组合

嗨,我不想validation我的表中3列的独特组合。 比方说,我有一个名为汽车的表,其中包括:brand,:model_name和:fuel_type。 然后我想要的是validation,如果一个logging是独特的基础上的组合3例如: brand model_name fuel_type Audi A4 Gas Audi A4 Diesel Audi A6 Gas 应该都是有效的。 但另一个logging“奥迪,A6,天然气”应该是无效的。 我知道这个validation,但我怀疑它实际上做我想要的。 validates_uniqueness_of :brand, :scope => {:model_name, :fuel_type}

Rails控制器的Ruby帮手方法的位置?

我有一些Ruby方法(或所有)控制器需要。 我试图把它们放在/app/helpers/application_helper.rb 。 我用它来在视图中使用的方法。 但是控制器没有看到这些方法。 是否有另一个地方,我应该把他们或我需要访问这些帮手方法不同? 使用最新的稳定的Rails。

为什么rails bootstrap这么慢,我能做些什么呢?

Rails 3.0是一个严重的狗。 我在Rails上开发了5年,启动速度从未如此慢。 尤其是,testing永远引导在一stream的MacBook与SSD,所以迭代周期遭受严重。 每次我开始testing时,我都需要阅读一篇文章。 这是疯狂的,而不是“敏捷”。 我不妨编辑一下。 当我有机会的时候,这是我最终从Rails转移的主要动机。 如果有人有解决办法,请提供。 我知道很多人遭受这个问题。 我不使用rspec – 我知道有一个解决scheme来帮助rspec的testing。 我正在使用faster_require和rails-dev-boost,但没有太大的影响。 我在ruby1.9.2,需要。 一个非常简单的控制器testing需要26秒的双核2.13 Ghz的MacBook Air与4Gb RAM和SSD! 为什么!?

Rails:我怎样才能从列中获得唯一的值

我怎样才能从表中的列中获得唯一的值? 例如,我有这个产品表: ID NAME CATEGORY 1 name1 1st_cat 2 name2 2nd_cat 3 name3 1st_cat 在这里,我只想得到2个值 – 1st_cat和2nd_cat: <%Products.each do |p|%> <%=p.category%> <%end%>

join的范围:has_many:通过关联

class Users < ActiveRecord::Base has_many :meetings, :through => :meeting_participations has_many :meeting_participations end class Meetings < ActiveRecord::Base has_many :users, :through => :meeting_participations has_many :meeting_participations end class MeetingParticipations < ActiveRecord::Base belongs_to :user belongs_to :meeting scope :hidden, where(:hidden => true) scope :visible, where(:hidden => false) end hidden是在m2m关联表内的一个额外的布尔列。 给定一些Users实例current_user ,我想要做的 current_user.meetings.visible 它将检索Meetings一个集合,其中用户是hidden列为false的参与者。 我最近得到的是将以下范围添加到Meetings类 scope :visible, joins(:meeting_participations) & MeetingParticipation.visible 该scope […]

在Rails 3中删除表格和删除模型的最佳方法是什么?

我有一个模型和桌子,我不再需要在我的应用程序,我可以离开他们在那里,但我想删除他们保持干净整洁。 我试图找出最好的方法来消除他们与我的migrations & db / schema.rb文件和任何副作用可能有我的生产环境,我的应用程序在Heroku上。 我在我的本地机器和heroku上使用PostgreSQL。 到目前为止,我已经find了两种方法来做到这一点,但不知道哪个是最好的方法/轨道方式? 方法1 我想到了进入我的数据库,放下桌子,然后摧毁模型。 rails db DROP TABLE table_name \q rails destroy model model_name 如果我这样做,这个模型/表格的迁移会发生什么? 我对这个模型有两个迁移,一个是timestamp_create_modelname和一个add_attribute_to_table名字。 这个方法也会更新db / schema.rb文件吗? 当我将应用程序推到Heroku时,我怀疑模型会被移除,但是表格将保留在原位,是否有一个heroku命令来删除表格。 方法二 我读到的另一种方法是生成一个新的迁移,以删除表,然后摧毁模型。 rails generate migration drop_tablename 然后更新下面的文件: db / migrate / timestamp_drop_tablename (在下面Dan Wich的回答中更新) class DropTablename < ActiveRecord::Migration def up drop_table :tablename end def down create_table :tablename do |t| […]

Rails 3的respond_to:默认格式?

我正在转换Rails 2应用程序到Rails 3.我目前有一个控制器设置如下: class Api::RegionsController < ApplicationController respond_to :xml, :json end 与一个行动,如下所示: def index @regions = Region.all respond_with @regions end 实现非常简单,api / regions,api / regions.xml和api / regions.json都可以按照您的预期进行响应。 问题是,我希望API /地区默认情况下通过XML响应。 我有消费者期望XML响应,我恨他们改变他们所有的URL包括.xml,除非绝对必要。 在Rails 2中,你可以这样做: respond_to do |format| format.xml { render :xml => @region.to_xml } format.json { render :json => @region.to_json } end 但在Rails 3中,我找不到将其默认为XML响应的方法。 有任何想法吗?

Rails迁移:检索当前迁移版本的最佳方法

有没有好的方法来检索迁移版本号? 我需要在模型中实现一个方法,其行为与特定的迁移版本不同。 我发现连接适配器中的assume_migrated_upto_version正在从数据库检索版本,但无法find其他人。 背景:我试图从表A中删除两列,想将它们移动到表B中,并从表A添加关联到表B. 在这个变化中,我需要访问这两列。 但在此之后,我想为这些列添加代理方法以实现兼容性。