Questions tagged «ruby-on-rails-3»

Ruby on Rails是一个用Ruby编写的开源Web开发框架。Ruby on Rails遵循约定胜于配置的原则,使您不必重新进行发明以保持生产力。仅将此标记用于Rails 3特定问题,并标记这些问题[ruby-on-rails]。

10
Rails:空值顺序最后
在我的Rails应用程序中,我遇到了几次想了解其他人如何解决的问题: 我有某些值是可选的记录,因此某些记录具有值,而某些记录为该列为null。 如果按该列在某些数据库上排序,则空值将首先排序,而在某些数据库上,空数将最后排序。 例如,我有可能属于或不属于某个收藏集的照片,即有些照片在哪里collection_id=nil,有些在哪里collection_id=1等等。 如果这样做的Photo.order('collection_id desc)话,那么在SQLite上我最后得到的是空值,而在PostgreSQL上我首先得到的是空值。 有没有一种很好的,标准的Rails方法来处理此问题并在任何数据库中获得一致的性能?

6
如何在不运行rake spec的情况下为Rails rspec测试准备测试数据库?
经过大量的故障排除后,我发现我需要先运行rake spec一次(可以使用control-c中止),然后才能直接运行rspec(例如,在我们的部分规格上)。我们正在运行Rails 3.0.7和RSpec 2.5.0。 显然,rake正在运行一些重要的数据库设置任务/代码(我们在根级别Rails Rakefile和其他地方可能有自定义代码)。 如何在不运行的情况下运行rake测试数据库设置任务/代码rake spec? 除了能够在一个文件子集上运行rspec之外,我还使用specjour将我们的规范分布在多个内核上(尚未成功在整个LAN上传播它们),但是我看到的行为与运行rspec相同直接:我需要rake spec在specjour工作之前在每个测试数据库(假设有两个内核)上运行: rake spec TEST_ENV_NUMBER=1 control-c (after tests start) rake spec TEST_ENV_NUMBER=2 control-c (after tests start) specjour 注意:我的config / database.yml具有用于测试的条目(对于并行测试gem来说很常见): test: adapter: postgresql encoding: unicode database: test<%=ENV['TEST_ENV_NUMBER']%> username: user password: parallel_tests似乎正确设置了它的数据库,但是我们的许多规范都失败了。 我还应该提到,运行specjour prepare会导致Postgres记录无法找到数据库的错误,但是会创建它们(没有表)。在随后的运行中,不会记录任何错误,但是也不会创建表。我的整个问题很可能仅是中的错误prepare,因此我在github上进行了报告。 我认为可以通过Specjour::Configuration.prepare在.specjour / hooks.rb中进行设置来在每个specjour测试数据库上运行任意代码,因此,如果有任何我需要运行的rake任务或其他代码,则可以在其中运行。

7
哈希删除除特定键以外的所有键
我想从哈希中删除除给定键以外的所有键。 例如: { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] } 我想删除除“名字”和/或“地址”之外的所有内容 谢谢

10
rails-“警告:无法验证CSRF令牌的真实性”用于json devise请求
如何检索CSRF令牌以通过JSON请求传递? 我知道出于安全原因,Rails正在检查所有请求类型(包括JSON / XML)上的CSRF令牌。 我可以放入控制器skip_before_filter :verify_authenticity_token,但是会失去CRSF保护(不建议:-))。 这个类似的(仍然不被接受)的答案表明 使用检索令牌 <%= form_authenticity_token %> 问题是如何?我是否需要先调用任何页面以检索令牌,然后使用Devise进行真正的身份验证?还是我可以从服务器上获得一次信息然后再使用它(直到我在服务器本身上手动更改它)?

8
将Devise登录设置为根页面
我的路线使用了以下代码: devise_for :user, :as => '', :path_names => { :sign_in => "", :sign_out => "logout", :sign_up => "register" } 但是,当我注销并转到时/logout,出现以下错误: 没有路由匹配{:action =>“ new”,:controller =>“设备/会话”} 如何设置要执行的根路径:sign_in?


4
最佳Ruby on Rails WebSocket工具[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我在Rails 3中开始了项目,我需要添加通知(例如Facebook)。最好的方法是将WebSocket用于iPad之类的支持设备,但是我找不到能在Rails中轻松实现它的任何好的工具。我找到了Pusherapp,但价格不菲,我也不认为将数据提供给第三方公司是明智的。所以需要做的事情: 开源的 某种渠道支持 Rails的助手(和Rails 3一起使用)

3
默认在Rails has_many关系上使用范围
假设我有以下课程 class SolarSystem < ActiveRecord::Base has_many :planets end class Planet < ActiveRecord::Base scope :life_supporting, where('distance_from_sun > ?', 5).order('diameter ASC') end Planet有一个范围life_supporting和SolarSystem has_many :planets。我想定义我的has_many关系,以便当我要求solar_system所有关联时planets,将life_supporting自动应用范围。本质上,我想solar_system.planets == solar_system.planets.life_supporting。 要求 我不希望改变scope :life_supporting在Planet以 default_scope where('distance_from_sun > ?', 5).order('diameter ASC') 我还想避免重复,因为不必添加到 SolarSystem has_many :planets, :conditions => ['distance_from_sun > ?', 5], :order => 'diameter ASC' 目标 我想吃点类似的东西 …

5
Rails —使用没有STI的类型列?
我想使用type不调用单表继承(STI)的列-我只想type成为包含的普通列String。 我如何才能做到这一点而又不用Rails期望我具有单表继承并抛出异常The single-table inheritance mechanism failed to locate the subclass...This error is raised because the column 'type' is reserved for storing the class in case of inheritance.? 有关如何执行此操作的任何想法?

5
如何在factory_bot中定义数组/哈希?
我正在尝试编写一个测试,该测试模拟Dropbox的REST服务的一些返回值,该返回值将我的数据以嵌套哈希的形式返回给Array。 由于返回结果是一个内部有has的数组,因此我很难弄清楚如何编写Factory代码。会怎么办? Factory.define :dropbox_hash do ?? end Dropbox数据如下所示: ["/home", {"revision"=>48, "rev"=>"30054214dc", "thumb_exists"=>false, "bytes"=>0, "modified"=>"Thu, 29 Dec 2011 01:53:26 +0000", "path"=>"/Home", "is_dir"=>true, "icon"=>"folder_app", "root"=>"app_folder", "size"=>"0 bytes"}] 我想在我的RSpec中进行如下工厂调用: Factory.create(:dropbox_hash)


17
服务器是否在主机“ localhost”(:: 1)上运行并在端口5432上接受TCP / IP连接?
在开始之前,请注意,我在网上的Stack Overflow和文章中发现了几个类似的问题,但是没有一个问题能帮助我解决问题: PG错误无法连接到服务器:连接被拒绝服务器是否在端口5432上运行? PG :: ConnectionBad-无法连接到服务器:连接被拒绝 psql:无法连接到服务器:连接被拒绝 现在,这里是问题: 我有一个像魅力一样的Rails应用程序。 与我的合作伙伴一起,我们使用GitHub进行协作。 我们有master和mvp分支机构。 我最近git使用Homebrew(Mac)更新了我的版本。 我们使用Foreman在本地启动我们的应用程序。 现在,当我尝试在本地启动该应用程序时,出现以下错误: PG::ConnectionBad at / could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running …

4
如何将单列的值放入数组
现在,我正在执行以下操作以选择单列数据: points = Post.find_by_sql("select point from posts") 然后将它们传递给方法,我希望我的方法保持不可知,现在必须从我的方法中调用hash.point。如何快速将其转换为数组并将数据集传递给我的方法,还是有更好的方法?

6
以Ajax方式在Rails 3中提交表单(使用jQuery)
我是Rails和jQuery的初学者。我在一页中有两个单独的表单,我想以ajax方式(使用jQuery)分别提交。这就是我走了多远。任何人都可以添加或修复此代码以使其正常工作。我正在使用Rails 3.1和jQuery 1.6。先感谢您。 application.js $(".savebutton").click(function() { $('form').submit(function() { $(this).serialize(); }); }); 第一种形式: <%=form_for :users do |f| %> <fieldset> <legend>Basic details</legend> <%= f.label :school %> <%= f.text_field :school,:size=>"45",:class=>"round",:id=>"school" %><br/> </fieldset> <p><%= button_to "save and continue",{:class=>"savebutton"} %></p> <%end%> 第二种形式: <%=form_for :courses do |c| %> <fieldset> <legend>Your current classes</legend> <label>class:</label><%= c.text_field :subject,:size=>"45",:class=>"round" %><br/> …

3
为什么在Rails 3中找不到我在lib / tasks中的自定义rake任务?
内置的rake任务可以正常工作,但是我的新自定义任务在Project / lib / tasks / payments.rb中没有加载: namespace :payments do desc "Tally payments at the end of the month" task :compute => :environment do BillingPeriod.compute_new_period end end $ rake payments:compute (in /Users/rob/Code/Apps/skyfarm) rake aborted! Don't know how to build task 'payments:compute' 如果我加载文件application.rb,它可以正常工作: require 'lib/tasks/payments.rb' ...但是它打破了其他东西: $ rails s ./lib/tasks/payments.rb:1: undefined …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.