rails3 модельный вопрос - PullRequest
       23

rails3 модельный вопрос

1 голос
/ 02 апреля 2011

Я перешел с php на rails3, и я все еще думаю, что это было хорошее решение! В любом случае у меня есть несколько моделей:

users
questions
answers
question_id
votes
user_id
answer_id

модель для пользователей:

has_many :questions
has_many :votes

модель для вопросов:

belongs_to :user
has_many :answers, :dependent => :destroy
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:text].blank? }, :allow_destroy => true

модель для ответов:

belongs_to :question
has_many :users, :through => :votes, :dependent => :destroy
has_many :votes

модель для голосов:

belongs_to :answer
belongs_to :user

Теперь мой вопрос, как только пользователь проголосовал за ответ, голосование за этого пользователя и за этот конкретный вопрос должно быть закрыто ...

Я использую devise и cancan для пользователей и авторизации в остальной части моего проекта ...

На мой взгляд, это должно выглядеть примерно так:

<% unless current_user.question_answered.include? question %>

, а затем выполните сценарий, в котором я отображаю кнопки голосования ...

В моей модели голосов у меня есть answer_id и user_id, я знаю current_user.id и текущий question.id так что если в элементе voice.user_id есть элемент voice.answer_id, который находится в текущем файле question.id, то он не должен отображать сценарий создания моей кнопки ... аааа, как это сделать ...?

Большое спасибо заранее! И с наилучшими пожеланиями, Thijs

Ответы [ 2 ]

2 голосов
/ 02 апреля 2011

Я бы лично вышел за пределы разработки и написал свой собственный метод.Я думаю, что это немного чище и легче для понимания.Этим методом вы также гарантируете, что выполняете только один быстрый запрос к вашей БД.Задавая current_user.questions_answered, вы запрашиваете базу данных для всех вопросов, на которые ответил пользователь, что может быть гораздо большим результатом, чем проверка, проголосовал ли пользователь по текущему вопросу:затем настройте ваш взгляд на:

<% if current_user.can_vote_on?(question) %>
1 голос
/ 02 апреля 2011

в умении напишите что-то вроде этого

can :vote, Answer, :votes => { :users => user }

, по вашему мнению, сделайте что-то вроде

<% if can? :vote, Answer %>

(я не могу проверить это прямо сейчас, поэтому дайте мне знать, если это работает)

...