Questions tagged «ruby-on-rails»

Ruby on Rails是一个用Ruby编写的开源全栈Web应用程序框架。它遵循流行的MVC框架模型,并以其“配置之上的约定”方法进行应用程序开发而闻名。

13
ActiveRecord find_each结合限制和顺序
我正在尝试使用ActiveRecord的find_each方法运行约50,000条记录的查询,但是它似乎忽略了我的其他参数,如下所示: Thing.active.order("created_at DESC").limit(50000).find_each {|t| puts t.id } 除了要在50,000处停下来而不是按进行排序外created_at,这是在整个数据集上执行的结果查询: Thing Load (198.8ms) SELECT "things".* FROM "things" WHERE "things"."active" = 't' AND ("things"."id" > 373343) ORDER BY "things"."id" ASC LIMIT 1000 有没有办法获得类似的行为,find_each但具有最大总限制并遵守我的排序标准?

4
REACT ERROR <th>不能作为<thead>的子代出现。参见(未知)> thead> th
我正在使用React-Rails应用程序,并且在控制台中不断出现此错误: ``` Warning: validateDOMNesting(...): &lt;th&gt; cannot appear as a child of &lt;thead&gt;. See (unknown) &gt; thead &gt; th. 我不确定为什么这行不通..我想为表使用标头(thead),并且对其他人有用。我会把tbody放进去,但我需要桌子的实际主体。 这是此表的代码: ``` React.DOM.table className: 'table table-bordered' React.DOM.thead null, React.DOM.th null, 'Description' React.DOM.th null, 'Actions' React.DOM.tbody null, for post in @state.posts React.createElement Post, key: post.id, post: post, handleDeletePost: @deletePost **编辑我曾尝试在thead下添加tr标签,这会导致额外的错误。这就是我将代码更改为: ``` React.DOM.table …

12
有没有办法避免自动更新Rails时间戳字段?
如果您有数据库列created_at,updated_at那么在创建和更新模型对象时,Rails会自动设置这些值。有没有一种方法可以保存模型而不接触那些列? 我要引入一些旧数据,我想从(不同名称)旧数据字段中的相应值中设置这些值。我发现在模型上设置它们然后保存模型时,Rails似乎会覆盖传入的值。 当然,我可以使用不同的命名方式来命名Rails模型列,以防止这种情况,但是在导入数据之后,我希望Rails执行其自动时间戳记功能。

6
FactoryGirl和多态关联
该设计 我有一个通过多态关联属于某个配置文件的用户模型。我选择此设计的原因可以在这里找到。总而言之,该应用程序有许多用户具有完全不同的配置文件。 class User &lt; ActiveRecord::Base belongs_to :profile, :dependent =&gt; :destroy, :polymorphic =&gt; true end class Artist &lt; ActiveRecord::Base has_one :user, :as =&gt; :profile end class Musician &lt; ActiveRecord::Base has_one :user, :as =&gt; :profile end 选择此设计后,我很难进行良好的测试。使用FactoryGirl和RSpec,我不确定如何以最有效的方式声明关联。 第一次尝试 factory.rb Factory.define :user do |f| # ... attributes on the user # this …



3
Rails has_one:通过关联
Rails的has_one :through关联可以通过第二种模型来帮助与第三种模型建立一对一的关联。除了建立快捷方式关联之外,该功能的真正用途是什么,否则还有一步之遥。 从Rails指南中获取以下示例: class Supplier &lt; ActiveRecord::Base has_one :account has_one :account_history, :through =&gt; :account end class Account &lt; ActiveRecord::Base belongs_to :supplier has_one :account_history end class AccountHistory &lt; ActiveRecord::Base belongs_to :account end 可能会让我们做类似的事情: supplier.account_history 否则将达到: supplier.account.history 如果仅是为了更简单的访问,那么从技术上讲,可能存在一对一关联,该关联将一个模型与经过n-1个模型的第n个模型连接起来,以便于访问。除了快捷方式,我还有什么想念的吗?

3
什么时候使用save !,创建!和update_attributes!在Rails中?
我正在尝试找出何时使用爆炸!保存和更新记录的版本?我已经阅读并听说,如果您只是保存一个记录或更新单个属性,或者您确信没有问题的话,或者总是在控制器外部使用它们,则不需要它们。我想我对保存多件事情然后发生某些事情失败然后数据库中的数据不完整感到不安。我正在从事的当前Rails项目已完成50%以上,目前还没有任何爆炸。我在模型中调用了一些自定义方法,这些方法会更新或创建多个记录,并担心它们是否应该进行某种事务处理。 很抱歉,如果这看起来很分散,但我只是想弄清楚如何正确使用ActiveRecord中的保存功能,使我的生活更轻松,最后一点压力也减轻了。谢谢你的时间。

4
仅针对生产环境禁用Devise注册
我正在与一组特定的用户一起启动Beta版网站。我只想在生产环境中禁用注册,并且只能禁用一小段时间(即,我不想完全取消注册)。我知道我可以简单地隐藏“注册”链接,但是我怀疑黑客比我仍然可以使用RESTful路由来完成注册更聪明。禁用注册的最佳方法是什么,这样我的测试/开发环境仍然可以工作,但是生产会受到影响?感谢您的指导。 我尝试以“ sign_up”转到“ sign_in”的方式指向命名作用域,但是没有用。这是我尝试过的: devise_scope :user do get "users/sign_in", :to =&gt; "devise/sessions#new", :as =&gt; :sign_in get "users/sign_up", :to =&gt; "devise/sessions#new", :as =&gt; :sign_up end 理想情况下,我们会将用户转到“ pages#registration_disabled”页面或类似的页面。我只是想得到一些可以玩的东西。 编辑:我已根据要求更改了模型,然后将以下内容添加到/spec/user_spec.rb describe "validations" do it "should fail registration if in production mode" do ENV['RAILS_ENV'] = "production" @user = Factory(:user).should_not be_valid end end 它传递的是“ true”而不是false。有没有办法模拟生产环境?我只是在吐口水。 …

7
耙任务在哪里定义?
在新创建的Rails项目(由生成rails someName)上,可以运行一些“默认”耙任务,例如: rake test rake db:migrate 等等 问题是,这些任务在哪里得到描述?默认值Rakefile不具有所有这些任务。 此外,我签出了一些使用的项目,rspec并且能够rake spec运行所有测试。spec目标在哪里定义?

6
尝试创建模型时,“ rails generate”命令挂起
我是Rails的新手,今天早上决定放弃我的整个数据库设计/模型并重新开始。而且,作为菜鸟,我敢肯定做错了。 我删除了其中的所有文件db/migrate/并删除了表。当我尝试生成第一个新模型类时,导轨刚刚挂起。在我击中^ C并尝试其他方法之前,先在杂草中脱掉10分钟。 这次,我再次放下桌子,将整个项目移到project.bad并运行新的rails重新开始。同样,用旧名称生成新项目后,它挂在rails generate命令上(我使用的是相同的项目名称)。 无奈之下,我尝试在相同的根目录下创建另一个新项目。尤里卡!这像冠军一样工作,创建了控制器和模型类,但是我完全无法使用原始项目名称,原始项目或任何新创建的项目来生成任何东西。我想让它重新工作是什么?我现在不介意完全丢失,但是我希望能够再次使用原始项目名称! 这是log / development.log的样子: (255.5ms) CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB (337.7ms) CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`) ActiveRecord::SchemaMigration Load (0.2ms) SELECT `schema_migrations`.* FROM `schema_migrations` (0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 知道最后一次SELECT之后会发生什么吗?

4
Ruby:如何制作公共静态方法?
在Java中,我可以这样做: public static void doSomething(); 然后,我无需创建实例即可静态访问该方法: className.doSomething(); 如何在Ruby中做到这一点?这是我的课程,据我了解self.,该方法是静态的: class Ask def self.make_permalink(phrase) phrase.strip.downcase.gsub! /\ +/, '-' end end 但是当我尝试致电: Ask.make_permalink("make a slug out of this line") 我得到: undefined method `make_permalink' for Ask:Class 如果我还没有声明该方法为私有方法,那为什么会这样呢?

3
Rails.cache.clear某些键名?
是否有可能以某种方式运行Rails.cache.clear并且仅清除具有特定名称/字符串的键? 我不想清除整个缓存...只是用钥匙串blog/post的名称(即blog/post/1,blog/post/2)。 我正在使用带有memcached的dalli作为我的缓存并运行Rails 3.0.6。



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.