2

我想将作为参数接收的字符串重构为单词数组(使用该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

finally 可以正常工作,但没有任何错误,但表现得像没有任何工作和源通常的字符串(例如@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
4

1 回答 1

1

Rails 以某种方式保留了“test”这个词。

我的模型的属性名称之一是“测试”。当我尝试调用instance.update_attributes(:test => SOMEVALUE)时,它会返回与您收到的相同的“参数数量错误(0 表示 2..3)”消息。

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

于 2014-03-19T19:54:33.160 回答