[英]Ruby on Rails has_and_belongs_to_many association issues
[英]Ruby on Rails - delegate devise member on has_and_belongs_to_many association
我有一個has_and_belongs_to_many
之間的關聯keywords
和groups
,然后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.