2013-11-02 3 views
0

Так вот идеяКак я могу добавить пользовательские кнопки голосования на рельсах приложение

class Question < ActiveRecord::Base 
    has_many : answers 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
    has_one :vote 
end 

class Vote < ActiveRecord::Base 
    belongs_to :question 
end 
  1. Как я могу ограничить количество вопросов, пользователь может задать?
  2. Есть ли лучший способ этого?
+0

Вашего Класс голосования, он должен иметь 'belongs_to: answer', а не': question' (или, возможно, ваш 'has_one' находится в неправильном классе) –

ответ

1

Ответ на первый вопрос:

Внутри метода QuestionsController создания, вы должны просто поставить код, который говорит что-то вроде:

if user.questions.length > 3 
    #tell them they can't ask more questions 
else 
    #create the question 
end 

на второй:

также , Я не думаю, что имеет смысл иметь Голосование как собственный ресурс. Я бы просто определил «голос» или «голос» как поле «Ответ». Когда на голосование проголосовали, вы просто увеличиваете количество ответов. Зависит от случая использования, хотя

+0

Я бы предпочел, чтобы голоса были собственным ресурсом, связанным с ним user_id , чтобы пользователи могли видеть, за что они голосовали, и, возможно, даже изменить свой голос. –

+0

О, да, это имеет смысл тогда –

0

Beyond, если вы хотите, чтобы настроить более подробно вашу проверку, вы можете делегировать проверку, как это так, если предположить, что user_id является user столбцом вложенного в question модели

class Question < ActiveRecord::Base 
    validates_with LengthValidator, :field => :user_id 
.... 
end 

class LengthValidator < ActiveModel::Validator 
    def validate(record) 
    if options[:fields].any? 
    #put the above conditional of @Accipheran 
    end 
end 
Смежные вопросы