1

https://github.com/ari/jobsworthをエンジンに変換することに挑戦しています(今のところ呼び出しschedulerています)。User行うことの1つは、メインアプリとエンジン内のモデルの間に関連付けを設定することです。

私はこの答えacts_as_scheduler_userのように使用しています:

require "scheduler/engine"

module Scheduler    

module ActsAsSchedulerUser

   module ClassMethods

       def acts_as_scheduler_user(options = {})   
           has_many    :widgets
       end
#etc

初期のエンジンはメインアプリに接続されてUser.reflect_on_all_associations(:has_many)おり、エンジンのコードまたはメインアプリのコードのいずれかを呼び出すと正常に取得されます

#<ActiveRecord::Reflection::AssociationReflection:0x000001069e45b0 @macro=:has_many, @name=:widgets, @options={:order=>"widgets.column, widgets.position", :dependent=>:destroy, :extend=>[]}, @active_record=User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, created_at: datetime, updated_at: datetime, first_name: string, last_name: string, client_id: integer, invitation_token: string, invitation_sent_at: datetime, invitation_accepted_at: datetime, invitation_limit: integer, invited_by_id: integer, invited_by_type: string, client_name_requested: string, mode: string, forem_admin: boolean, forem_state: string, forem_auto_subscribe: boolean), @plural_name="widgets", @collection=true> 

そしてcurrent_user、エンジンアプリで正常に動作しています-メインアプリのcurrent_userを返します。

current_user.widgetsただし、エンジンのアプリを呼び出すと、エラーが発生しますuninitialized constant User::Widget

何かご意見は?

++++++++++

編集:ああ、私がWidget.allコンソールで行うとき、私は得ますNameError: uninitialized constant Widget、しかし私がそうするとき、私Scheduler::Widget.allは正しい応答を得ます。current_user.widgetsだから私の質問は、名前空間を使用しながらどのように呼び出すのですか?

4

1 に答える 1

1

私は要点を見逃しているかもしれませんが(エンジンの経験はあまりありません)、おそらくhas_manyクラスメソッドを実際のクラスに渡して名前空間を含めます。

def acts_as_scheduler_user(options = {})   
  has_many :widgets, :class_name => Scheduler::Widget
end
于 2012-11-11T14:18:34.800 に答える