У меня есть модель данных с участием пользователей и наград, и к ней добавлена таблица user_awards.
class User < ActiveRecord::Base
:has_many :user_awards
:has_many :awards, :through => :user_awards # awards the user has won
end
class Award < ActiveRecord::Base
:has_many :user_awards
:has_many :users, :through => :user_awards
end
Я бы хотел, чтобы было свойство times_won, чтобы я мог определить, сколько раз пользователь выиграл конкретную награду. (Каждое предоставление награды - это строка в таблице соединений user_awards)
т.е. Я хотел бы к этому:
>> user = User.find(777)
>> award = user.awards[0]
>> award.times_won # and get the number of times
# this user has won this particular award
Пока что я добавил метод Award.times_won_by (пользователь), но мне интересно, есть ли способ обернуть награду, когда она находится в этом контексте user.award, чтобы я знал, сколько раз она была выиграна , Я не могу добавить свойство динамически, так как я просто получаю NoMethodError