2

パラメータとして受け取った文字列を単語の配列にリファクタリングしたい (splitメソッドを使用)。

私のTestモデルには という 1 つの属性がありますsource

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

これはエラーを返します:

引数の数が間違っています (2..3 の場合は 0)

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

最後に動作します 間違いなく動作しますが、何も動作しないように動作し、通常の文字列をソースにします (たとえば@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

「テスト」という言葉が何らかの形でレールによって予約されている可能性があります。

私のモデルの属性名の 1 つは「test」でした。を呼び出そうとするとinstance.update_attributes(:test => SOMEVALUE)、同じ「引数の数が間違っています (2..3 の場合は 0)」というメッセージが返されます。

属性の名前を「test」から別のものに変更すると、エラーが消えました。

于 2014-03-19T19:54:33.160 に答える