我想将一个字符串(我作为参数接收)重构为一个单词数组(使用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
答案 0 :(得分:1)
有可能在某种程度上由rails保留“test”这个词。
我的模特的一个属性名称是“test”。当我试图调用instance.update_attributes(:test => SOMEVALUE)
时,它会返回相同的'错误数量的参数(0 for 2..3)'消息。
当我将属性的名称从“test”更改为其他内容时,错误消失了。