Tag: ruby

Rails中has_one和belongs_to之间的区别?

我想了解RoR中的has_one关系。 比方说,我有两个模型 – Person和Cell : class Person < ActiveRecord::Base has_one :cell end class Cell < ActiveRecord::Base belongs_to :person end 我可以在Cell模型中使用has_one :person而不是belongs_to :person吗? 不一样吗?

Ruby:如何为数组和哈希创buildIRB打印结构

当我在irb中创build一个新的数组/散列时,它将打印出一个很好的格式来显示结构,例如。 ["value1", "value2", "value3"] {"key1" => "value1"} …但是当我尝试打印出我的variables使用puts ,我得到他们折叠: value1 value2 value3 key1 value1 我认为, puts不是我想要的正确的命令,但是是什么? 我想能够在第一个格式,而不是第二个在irb中查看我的variables。

如何在Rail控制台中使用FactoryGirl中的工厂

我在开发环境中使用rails控制台,我想使用工厂。 我怎样才能访问他们? 我曾尝试require "FactoryGirl"返回 1.9.3p393 :301 > require "FactoryGirl" LoadError: cannot load such file — FactoryGirl

validationstring的最小和最大长度,但允许它为空

我有一个我想validation的字段。 我希望字段能够留空,但是如果用户input数据,我希望它是一个特定的格式。 目前我在模型中使用下面的validation,但是这不允许用户留下空白: validates_length_of :foo, :maximum => 5 validates_length_of :foo, :minimum => 5 我如何写这个来实现我的目标?

在Rails中加载一个目录到加载path?

至于Rails 2.3,有什么正确的方法来添加一个目录到加载path,以便它挂钩到Rails的自动重新加载机制? 我想到的具体例子是我有一个类,有几个使用STI的子类,我认为这是一个好主意,把他们在一个子目录,而不是凌乱的顶层。 所以我会有这样的东西: #app/models/widget.rb class Widget < ActiveRecord::Base add_to_load_path File.join(File.dirname(__FILE__), "widgets") end #app/models/widgets/bar_widget.rb class BarWidget < Widget end #app/models/widgets/foo_widget.rb class FooWidget < Widget end 这是我正在寻找的add_to_load_path方法。

Rails中的Thread.current 用法的安全性

对于将信息存储在Thread.current散列(例如,current_user,当前子域等等)中的做法,我总是有相互矛盾的观点。 该技术已被提出作为简化模型层(查询范围,审计等)内的后续处理的一种方式。 http://m.onkey.org/thread-safety-for-your-rails http://rails-bestpractices.com/posts/47-fetch-current-user-in-models 为什么我的线程variables在Rails中间歇性的? 替代在Rails的API包装中使用Thread.current Thread.current []值和类级别属性是否安全在rails中使用? 许多人认为这种做法是不可接受的,因为它打破了MVC模式。 其他人则对这种方法的可靠性/安全性表示担忧,我的两部分问题集中在后一方面。 是否保证Thread.current散列在其整个周期中只有一个响应是私有的? 我明白,一个线程,在响应结束时,可能会被移交给其他传入的请求,从而泄漏存储在Thread.current任何信息。 在响应结束之前清除这些信息(例如,通过从控制器的after_filter执行Thread.current[:user] = nil )是否足以防止这种安全漏洞? 谢谢! 朱塞佩

警告:常量:: Fixnum已弃用当生成新模型时

我试图find一些解决scheme,但我真的找不到任何与运行rails命令时出现的错误相关的任何内容: 导轨生成模型书名:string摘要:text isbn:string /home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated /home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated /home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated Running via Spring preloader in process 3579 Expected string default value for '–jbuilder'; got true (boolean) invoke active_record identical db/migrate/20170104114702_create_books.rb identical app/models/book.rb invoke test_unit identical test/models/book_test.rb identical test/fixtures/books.yml 任何人都知道可能会导致这些错误?

Ruby数组:select(),collect()和map()

映射语法: a = ["a", "b", "c", "d"] #=> ["a", "b", "c", "d"] a.map {|item|"a" == item} #=> [true, false, false, false] a.select {|item|"a" == item} #=> ["a"] 问题如果我有: irb(main):105:0> details[1] => {:sku=>"507772-B21", :desc=>"HP 1TB 3G SATA 7.2K RPM LFF (3 .", :qty=>"", :qty2=>"1", :price=>"5,204.34 P"} 我想删除在这个数组上有一个空的qty值的每个条目,或者只select那些有一些值的条目。 我试过了 : details.map {|item|"" == item} 只是返回了很多的错误。 然后当我使用相同的只是改变地图select我得到: []

工厂女孩 – 目的是什么?

当我before(:each)使用before(:each)块时,rspectesting中Factory Girl的目的是什么? 感觉就像Factory Girl和a before(:each)唯一的不同之处就是工厂在testing之外准备对象创build。 这是正确的吗?

包括在gem中的耙子任务

1)gem里面的耙子任务有没有“最好”的地方? 我在/ tasks,/ lib / tasks中看过他们,而且我看到他们写成* .rb和* .rake – 不知道哪个(如果有的话)是“正确的” 2)一旦在环境中configuration了gem,我应该如何使它们可用?