簡體   English   中英

Ruby on Rails-has_and_belongs_to_many協會的委托devise成員

[英]Ruby on Rails - delegate devise member on has_and_belongs_to_many association

我有一個has_and_belongs_to_many之間的關聯keywordsgroups ,然后groups belongs_to member組和設計之間的關聯。

class Keyword < ActiveRecord::Base
  has_and_belongs_to_many :groups
  delegate :member, to: :groups
  validate :keywords_within_limit, on: :create

  def keywords_within_limit
    if self.member.keywords(:reload).count >= self.member.keyword_limit
       errors.add(:keyword, "exceeded limit")
    end
  end
end

我正在嘗試使用delegate訪問我當前的成員方法,但我收到錯誤NoMethodError - undefined method member for #<ActiveRecord::Associations::CollectionProxy []>:

我可以看到member是通過self.methods方法

為什么我不能使用delegate訪問成員方法?

從我可以看到,關鍵字和組之間存在許多映射。 因此,groups方法將返回組的集合,而不是組的單個記錄。 因此,當您委派“成員”時,它會委派給組的集合,而不是您期望的組對象。

錯誤消息中的#<ActiveRecord::Associations::CollectionProxy [] >是groups集合。

如果您希望收集所有組的成員,則可能需要執行以下操作:

def members
  groups.collect { |group| group.member }
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM