У меня есть три модели.
User
has_many :boards through => :celebrations
has_many :celebrations, :dependent => :destroy
Board
has_many :celebrations, :dependent => :destroy
has_many :users, :through => :celebrations do
def by_role(role)
find(:all, :conditions => ["celebrations.role = ?", role])
end
end
Celebration
:belongs_to :user
:belongs_to :board
Стол торжеств
create_table :celebrations do |t|
t.column :board_id, :int, :null => false
t.column :user_id, :int, :null => false
t.column :role, :string, :null => false
t.column :token, :string
t.column :accepted, :boolean, :default => false
t.timestamps
В контроллере:
@board = Board.find(session[:board_id])
@friends = @board.users.by_role("FRIEND")
В виде:
<% for friend in @friends do %>
<%= friend.name %>
<%= friend.email %>
Однако, когда я делаю следующее:
<% friend.celebration.accepted %>
Я получаю следующую ошибку:
undefined method `celebration' for #<User:0x104788c00>
Как получить доступ к столбцу «принято» в таблице торжеств, возвращенной вместес записью с использованием расширения модели "by_role (role)".
Заранее благодарю за помощь.