Я пытаюсь ограничить пользователя моего приложения голосованием (по вкусу в данном случае) ответом на вопрос определенное количество раз.Я успешно остановил коллекцию user_id, но запись продолжает создаваться.Мне нужно, чтобы проверка фактически блокировала создание записи в таблице лайков.
альтернативный текст http://gadocidesign.squarespace.com/storage/Screen%20shot%202010-05-20%20at%2010.07.19%20AM.png
Как видно, два последних голоса теряют идентификатор пользователя, но все еще создаются.Код ниже покажет вам, как я это делаю.Я пытаюсь ограничить голосование пользователей не более 10 раз за любой ответ на вопрос.
Как модель (я избавляю вас от обратных связей has_many, но они есть).
class Like < ActiveRecord::Base
belongs_to :site
belongs_to :user
belongs_to :question
validates_each :user_id do |row, attr, value|
m.errors.add :user_id, 'Too many likes' unless row.like_count < 10
end
def like_count
Like.count(:conditions => {:user_id => user_id, :question_id => question_id})
end
end
LikesController # create
class LikesController < ApplicationController
def create
@user = current_user
@site = Site.find(params[:site_id])
@like = @site.likes.create!(params[:like])
@like.user = current_user
@like.save
respond_to do |format|
format.html { redirect_to @site}
format.js
end
end
end