私は奇妙なエラーに直面しています。誰でもこの理由を説明できますか..
Site、Settings、および Experiences というモデルがあります。
設定とエクスペリエンスにはデータベース列「ビット」があります
私のサイトモデルには、このコードがあります
def populate_experiences_bit_set
self.experiences.map(&:bit).inject(0, :|)
end
def populate_settings_bit_set
self.settings.map(&:bit).inject(0, :|)
end
2_28.rake という私の rake ファイルには、bitというメソッドがあります。
def bit(klass)
current_class = klass.find(:all)
if current_class.count == 0
return 1
else
return (current_class.last.bit * 2)
end
end
このメソッドは、同じ rake ファイル内の rake タスク 'get_value' の 1 つで使用されます。
また、同じファイル内の create_sites_report_data と呼ばれる別の rake タスクには、次の行があります。
site.populate_experiences_bit_set
rake タスクを実行すると
rake releases:2.28:create_sites_report_data
エラーが表示されます
" プライベート メソッド /Users/rakeshshetty/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-2.3.5/lib/active_record/attribute_methods.rb:236:in `method_missing' を呼び出そうとしています "
In console, this works fine
>> s = Site/364
=> #<Site id: 364, name: "1 Field Ambulance - Detachment Wainwright", type: "Site", created_at: "2009-12-29 16:53:58", updated_at: "2009-12-29 16:53:58", short_name: "1 Field Am", self_updated_at: nil, last_updater_id: nil, vfp_id: "2BL0NFMI1", dup_reference_id: nil, field_id: nil, marked_as_deleted: false>
>> s.experiences.map(&:bit).inject(0, :|)
=> 0
>> s.settings.map(&:bit).inject(0, :|)
=> 64
2_28.rake ファイルのメソッド名を bit から bit_x に置き換えました Rake は正常に動作しました
blsi1181a:cpi_2.24 rakeshshetty$ rails -v
Rails 2.3.5
blsi1181a:cpi_2.24 rakeshshetty$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]
私の質問は、設定とエクスペリエンスのフィールドです。rake メソッド関数 bit() をどのように呼び出しますか? このレーキ ファイルは、アプリケーションのロード後にロードされますか?