标签: ruby

导致此ActiveRecord :: ReadOnlyRecord错误的原因是什么?

这是在这个先前的问题之后得到回答的.我实际上发现我可以从该查询中删除一个连接,所以现在工作查询是

start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]  
Run Code Online (Sandbox Code Playgroud)

这似乎有效.但是,当我尝试将这些DeckCards移动到另一个关联时,我得到ActiveRecord :: ReadOnlyRecord错误.

这是代码

for player in @game.players 
  player.tableau = Tableau.new
  start_card = start_cards.pop 
  start_card.draw_pile = false
  player.tableau.deck_cards << start_card  # the error occurs on this line
end
Run Code Online (Sandbox Code Playgroud)

和相关的模特(画面是桌上的球员卡)

class Player < ActiveRecord::Base
  belongs_to :game
  belongs_to :user
  has_one :hand
  has_one :tableau
end

class Tableau < ActiveRecord::Base
  belongs_to :player
  has_many :deck_cards
end  

class DeckCard < ActiveRecord::Base
  belongs_to :card
  belongs_to :deck …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord join ruby-on-rails associations

203
推荐指数
5
解决办法
7万
查看次数

Ruby中没有增量运算符(++)?

可能重复:
为什么Ruby不支持i ++或i- for fixnum?

为什么Ruby中没有增量运算符?

例如

i++
++i
Run Code Online (Sandbox Code Playgroud)

++操作员是否用于其他事情?这有真正的原因吗?

ruby operators

203
推荐指数
2
解决办法
16万
查看次数

如何从Ruby数组创建平均值?

如何从阵列中找到平均值?

如果我有阵列:

[0,4,8,2,5,0,2,6]
Run Code Online (Sandbox Code Playgroud)

平均值会给我3.375.

谢谢!

ruby ruby-on-rails

202
推荐指数
7
解决办法
14万
查看次数

我如何解析YAML文件?

我想知道如何使用以下内容解析YAML文件:

--- 
javascripts: 
- fo_global:
  - lazyload-min
  - holla-min
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试以这种方式解析它:

@custom_asset_packages_yml = (File.exists?("#{RAILS_ROOT}/config/asset_packages.yml") ? YAML.load_file("#{RAILS_ROOT}/config/asset_packages.yml") : nil)
    if !@custom_asset_packages_yml.nil?
      @custom_asset_packages_yml['javascripts'].each{ |js|
        js['fo_global'].each{ |script|
         script
        }
      }
    end
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,并给我一个错误,值为零.

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Run Code Online (Sandbox Code Playgroud)

如果我尝试这个,它会输出整个字符串(fo_globallazyload-minholla-min):

if !@custom_asset_packages_yml.nil?
          @custom_asset_packages_yml['javascripts'].each{ |js|
            js['fo_global']
          }
        end
Run Code Online (Sandbox Code Playgroud)

ruby yaml

201
推荐指数
3
解决办法
21万
查看次数

How to upgrade rubygems

我需要将gems升级到1.8我尝试安装相应的debian软件包,但它似乎没有升级

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$
Run Code Online (Sandbox Code Playgroud)

ruby gem

201
推荐指数
7
解决办法
21万
查看次数

如何使用Ruby Pry退出循环?

我正在使用Pry和我的Rails应用程序.我binding.pry在我的模型中设置了一个循环来尝试调试问题.例如:

(1..100).each do |i|
  binding.pry
  puts i
end
Run Code Online (Sandbox Code Playgroud)

当我输入时quit,它会进入下一次迭代并再次停止.有没有办法走出循环所以我不必输入quit100次?

目前,我知道如何摆脱它的唯一方法是使用CTRL+ C并重新启动应用程序.

ruby loops ruby-on-rails exit pry

200
推荐指数
6
解决办法
6万
查看次数

Ruby:如何将哈希转换为HTTP参数?

用简单的哈希就很容易了

{:a => "a", :b => "b"} 
Run Code Online (Sandbox Code Playgroud)

这将转化为

"a=a&b=b"
Run Code Online (Sandbox Code Playgroud)

但你如何处理更复杂的事情呢?

{:a => "a", :b => ["c", "d", "e"]} 
Run Code Online (Sandbox Code Playgroud)

这应该转化为

"a=a&b[0]=c&b[1]=d&b[2]=e" 
Run Code Online (Sandbox Code Playgroud)

或者更糟糕的是,(做什么)有类似的事情:

{:a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}]
Run Code Online (Sandbox Code Playgroud)

感谢非常感谢的帮助!

ruby parameters http hashmap

198
推荐指数
7
解决办法
12万
查看次数

Rails 4真实性令牌

当我遇到一些真实性令牌问题时,我正在研究一个新的Rails 4应用程序(在Ruby 2.0.0-p0上).

在编写响应json的控制器时(使用respond_to类方法),当我尝试使用创建记录时,我create开始ActionController::InvalidAuthenticityToken尝试异常curl.

我确定我设置-H "Content-Type: application/json"并设置数据,-d "<my data here>"但仍然没有运气.

我尝试使用Rails 3.2(在Ruby 1.9.3上)编写相同的控制器,并且我没有任何真实性令牌问题.我四处搜索,看到Rails 4中的真实性令牌发生了一些变化.据我所知,它们不再自动插入表格了?我想这会以某种方式影响非HTML内容类型.

有没有办法解决这个问题,而无需请求HTML表单,抢夺真实性令牌,然后使用该令牌发出另一个请求?还是我完全错过了一些非常明显的东西?

编辑:我刚尝试使用脚手架在新的Rails 4应用程序中创建一个新记录而不改变任何东西,我遇到了同样的问题所以我想这不是我做的事情.

ruby ruby-on-rails authenticity-token ruby-on-rails-4

198
推荐指数
7
解决办法
13万
查看次数

Ruby/Rails:将Date转换为UNIX时间戳

如何从Rails应用程序中的Date对象获取UNIX时间戳(自格林威治标准时间1970年以来的秒数)?

我知道Time#to_i返回一个时间戳,但是执行Date#to_time然后获取时间戳会导致大约一个月的时间(不知道为什么......).

任何帮助表示赞赏,谢谢!

编辑:好的,我想我想出来了 - 我在一个循环中多次处理一个日期,每次由于时区不匹配而移动一点日期,最终导致我的时间戳缩短一个月.不过,我仍然有兴趣知道是否有任何方法可以不依赖于此Date#to_time.

ruby timestamp ruby-on-rails date

197
推荐指数
4
解决办法
16万
查看次数

你在Ruby中称为 - >运算符是什么?

  1. 您如何称呼->运营商,如下所示?

    ->(...) do
      ...
    end
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这些片段不是等效的吗?

    succ = ->(x) {x + 1}
    succ = lambda {|x| x + 1}
    
    Run Code Online (Sandbox Code Playgroud)

ruby syntax

197
推荐指数
4
解决办法
5万
查看次数