【发布时间】:2015-04-26 04:08:16
【问题描述】:
我想在我的 rails 项目中使用 gem 'stuff-classifier'。首先,我在带有 rails 4.1.7 的新项目中对此进行了测试,并像我预期的那样工作。 但是当我在我的目标项目中做同样的事情时,我遇到了 ArgumentError 的问题:参数数量错误(0 代表 1..2)。但是当我初始化 StuffClassifier::Bayes 类时,我给出了 StuffClassifier::Bayes.new("Music_Classifier")
下面我展示了我所做的:
首先添加到 gemfile gem 'stuff-classifier'
接下来生成带有music_classifier文本属性的模型分类器
class Classifier < ActiveRecord::Base
serialize :music_classifier, StuffClassifier::Bayes
before_create :initialize_clfr
private
def initialize_clfr
cls = self.music_classifier = StuffClassifier::Bayes.new("Music_Classifier")
cls.train(:alternative, "Art Punk Alternative-Rock")
cls.train(:latin, "Alternativo & Rock Latino ")
end
end
在我的 db/seeds.rb 文件中,我有 Classifier.create!
然后我在控制台rake db:seed 中尝试,这给了我这个错误消息:
rake aborted!
ArgumentError: wrong number of arguments (0 for 1..2)
/home/pnc/.rvm/gems/ruby-2.1.3/gems/stuff-classifier-0.5/lib/stuff-classifier/bayes.rb:7:in `initialize'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/coders/yaml_column.rb:24:in `new'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/coders/yaml_column.rb:24:in `load'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/type/serialized.rb:52:in `default_value?'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/type/serialized.rb:16:in `type_cast_from_database'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:94:in `type_cast'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:42:in `original_value'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:37:in `value'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:54:in `changed_in_place_from?'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:74:in `attribute_changed_in_place?'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:149:in `block in changed_in_place'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:148:in `select'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:148:in `changed_in_place'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:141:in `attributes_changed_in_place'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:62:in `changed_attributes'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activemodel-4.2.0/lib/active_model/dirty.rb:173:in `attribute_changed?'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:115:in `old_attribute_value'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:90:in `write_attribute'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/timestamp.rb:52:in `block in _create_record'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/timestamp.rb:49:in `each'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/timestamp.rb:49:in `_create_record'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/persistence.rb:501:in `create_or_update'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/callbacks.rb:302:in `block in create_or_update'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:88:in `call'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:88:in `_run_callbacks'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:734:in `_run_save_callbacks'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/callbacks.rb:302:in `create_or_update'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/persistence.rb:142:in `save!'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/validations.rb:43:in `save!'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/dirty.rb:29:in `save!'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/transactions.rb:291:in `block in save!'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/transactions.rb:347:in `block in with_transaction_returning_status'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/transactions.rb:220:in `transaction'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/transactions.rb:344:in `with_transaction_returning_status'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/transactions.rb:291:in `save!'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/persistence.rb:51:in `create!'
/home/pnc/sites/spolisty/db/seeds.rb:8:in `<top (required)>'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `block in load'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/engine.rb:547:in `load_seed'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/tasks/database_tasks.rb:250:in `load_seed'
/home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:180:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
当我在 Rails 控制台中尝试这个时,我有同样的错误消息。
c = Classifier.new
Loading development environment (Rails 4.2.0)
2.1.3 :001 > c = Classifier.new
ArgumentError: wrong number of arguments (0 for 1..2)
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/stuff-classifier-0.5/lib/stuff-classifier/bayes.rb:7:in `initialize'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/coders/yaml_column.rb:24:in `new'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/coders/yaml_column.rb:24:in `load'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/type/serialized.rb:52:in `default_value?'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/type/serialized.rb:16:in `type_cast_from_database'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:94:in `type_cast'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:42:in `original_value'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute.rb:37:in `value'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_set.rb:31:in `fetch_value'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/read.rb:93:in `_read_attribute'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods/read.rb:87:in `read_attribute'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/attribute_methods.rb:305:in `attribute_for_inspect'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:443:in `block in inspect'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:441:in `collect'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/activerecord-4.2.0/lib/active_record/core.rb:441:in `inspect'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in `start'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:9:in `start'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:68:in `console'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/pnc/.rvm/gems/ruby-2.1.3/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'2.1.3 :002 >
我尝试在 Stack 上用这个 topic 解决这个问题,因为之前我有 rails 4.2.0.rc3 但是在将 rails 升级到 4.2.0 后我仍然遇到这个问题。
我怎样才能解决这个错误,或者我怎样才能以其他方式使用东西分类器?
谢谢帮助。
编辑: db/seeds.rb的内容
Classifier.create!
【问题讨论】:
-
seeds.rb的内容是什么? -
有简单的Classifier.create!
-
我无法点击您提到的主题的链接。
-
你能发布分类表的数据库架构吗?
-
请展示你的seeds.rb
标签: ruby-on-rails ruby ruby-on-rails-4