كيف يمكنني النطاق ACTS_AS_TAGGABLE_ON_STEREOIDS عن طريق الحساب؟

StackOverflow https://stackoverflow.com/questions/1592562

سؤال

إذا كان لدي موقع الويب الخاص بي ينقسم بشكل منطقي إلى حسابات (على سبيل المثال ACT-as-taggable-on-steroids هل تم تحديد العلامات التي تم تحديدها بواسطة الحساب الجاري؟

لإعطاء مزيد من التفاصيل ، إذا كنت أتمكن من الوصول إلى ACME ، فأنا لا أريد أن أرى علامات من مجال XYZ الفرعي.

لقد بحثت في Act-as-taggable-on ، ولكن سياق الكلام يتم توفيره فقط إذا كنت ترغب في الحصول على فئات مختلفة من العلامات لنفس النموذج.

هل كانت مفيدة؟

المحلول

على افتراض أنني فهمت سؤالك من حيث أن لديك حسابات متعددة لكل منها مع مجموعة من العلامات الخاصة بها التي يمكن تطبيقها على أي نموذج في التطبيق الخاص بك يستدعي ACTS_AS_TAGGABLE. يجب أن يفعل ما يلي ما تريد.

يمكنك إضافة ما يلي إلى وحدة تحكم التطبيق لجعل النطاق الفرعي في متناول جميع الإجراءات.

class ApplicationController < ActionController::Base

  before_filter :getSubdomain

  def getSubdomain
      @current_subdomain.(self.request.subdomains[0])
  end
end

على افتراض أنك تربط علامة إلى نطاق فرعي بعض كيف في قاعدة البيانات الخاصة بك ، يمكنك بعد ذلك إنشاء نطاق مسمى. يفترض هذا المثال أن النطاق الفرعي هو اسم مستخدم وأن طراز وضع العلامات الخاص بك ينتمي إلى مستخدم ، يمكنك بعد ذلك استخدام نطاق مسمى على طراز العلامة الخاص بك لتحديد تلك ذات الصلة بالوحات الفرعية فقط.

class Tag < ActiveRecord::Base
  ...
  named_scope :find_by_subdomain, labmda do |subdomain|
    { :joins => "users ON users.id = tags.user_id", :conditions => ["users.name = ?", subdomain] }
  end
end

ثم لاسترداد العلامات على المنشورات التي تم إنشاؤها من قبل المستخدم المرتبط بالنطاق الفرعي:Posts.tags.find_by_subdomain(@subdomain)

NB: سيتعين عليك زيادة نموذج العلامة المقدم من Acts-as-taggable-on-steroids لإضافة ما يلي. - عمود يربط كل علامة بحساب. - التحقق من صحة التفرد على الحساب. السماح لعدة حسابات أن يكون لها نفس العلامات.

نصائح أخرى

إذا كان الحساب نموذجًا لك ، فيمكنك تعيين حساب للكائن الموسومة كمالك. توثيق : https://github.com/mbleigh/acts-as-taggable-on#tag-onneration

ثم اطلب من حساب وضع علامة على الكائن. ثم للعثور على جميع العلامات ، يمكنك أن تطلب من المالك الحصول على علامات أو علامات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top