参数数量错误(0表示2..3)

时间:2013-03-06 20:39:59

标签: ruby-on-rails

我想将一个字符串(我作为参数接收)重构为一个单词数组(使用split方法)。

我的Test模型有一个属性,名为source

class Test < ActiveRecord::Base
  attr_accessible :source
  serialize :sources, Array
  after_create do
    test.source.split(' ')
  end
end

这会返回错误:

  

错误的参数数量(0表示2..3)

我无法弄清楚Rails想要的参数。

UPD

如果我改变我的代码:

class Test < ActiveRecord::Base
  attr_accessible :source
  serialize :sources, Array
  def split_this_text(test_id)
    @test = Test.where(:test_id=>test_id)
    @test.source.split(' ')
  end
end

并在tests_controller / create中调用方法:

 @test.split_this_text(:id)

比我收到此错误:

NoMethodError in TestsController#create

undefined method `split' for #<Arel::Nodes::JoinSource:0x4ddfc60>

UPD#2

最后的工作没有任何错误,但行为就像没有任何作用,并且源自usuall字符串(例如@test.source[0]返回一个字母)

class Test < ActiveRecord::Base
  attr_accessible :source
  serialize :sources, Array
  before_save :split_this_text
  def split_this_text
    self.source.split(' ')
 end
end

1 个答案:

答案 0 :(得分:1)

有可能在某种程度上由rails保留“test”这个词。

我的模特的一个属性名称是“test”。当我试图调用instance.update_attributes(:test => SOMEVALUE)时,它会返回相同的'错误数量的参数(0 for 2..3)'消息。

当我将属性的名称从“test”更改为其他内容时,错误消失了。