我一直在设法解决我的问题,但没有结果。我正在检查输入的成员是否有活跃的会员资格。
class Entry < ApplicationRecord
belongs_to :member
before_create :status
def status
member = Member.find(member_id)
if member.has_active_membership
return true
else
return false
end
end
endclass Member < ApplicationRecord
has_many :memberships
has_many :passes, through: :memberships
def has_active_membership
self.memberships.active?
end
endclass Membership < ApplicationRecord
belongs_to :member
belongs_to :pass
def active?
if (self.valid_until >= Date.today)
return true
else
return false
end
end
endundefined method `active?' for #<ActiveRecord::Associations::CollectionProxy [#<Membership id: 1, name: "XD", valid_from: "2022-10-01", valid_until: "2022-10-31", member_id: 2, pass_id: 2, created_at: "2022-10-01 19:41:43.186045000 +0000", updated_at: "2022-10-01 19:41:43.186045000 +0000">]>
Did you mean? acts_like? //error for member.rb has_active_membership我很难确定会员是否至少有一个活跃的会员。谢谢你的帮助
发布于 2022-10-12 11:02:57
问题是,您是在集合上调用active?,而不是在单个成员身份上调用
考虑到active?的实现方式,它不是一个作用域,您应该执行以下操作
def has_active_membership
memberships.any?(&:active?)
end另一种方法是将active实现为作用域。
scope :active, -> { where('valid_until >= ?', Date.today) }然后
def has_active_membership
memberships.active.exists?
endhttps://stackoverflow.com/questions/74040631
复制相似问题