2016-01-05 1 views
0

Я хочу написать простой метод mod, который проверяет таблицу, чтобы узнать, является ли пользователь модератором категории или нет и возвращает true для false.Метод возврата true или false, если пользователь является модулем категории в rials

После того, как метод сделал я надеюсь написать что-то вроде:

if current_user.mod? #or mod(current_user)? 
    blah 
else 
    blah blah 
end 

здесь является то, что у меня есть

def mod 
@user = current_user.id 

User.find(@user).anime_mods_relationships.where("anime_category_id = ?", params[:anime_id]) 
end 

Пользователи могут ассоциировать в качестве модов в таблице связей, которая содержит идентификатор пользователя и категория id.

Этот метод просто находит отношения. Я не уверен, как изменить его, чтобы вернуть true или false в зависимости от того, может ли он найти отношения или нет. Я думал, может быть, существует? метод может работать, но не может представить, как интегрировать его в метод.

Я делаю приложение для рельсов, чтобы лучше разобраться с рельсами, но я не сделал метод с нуля (кроме того, в учебниках). Каков наилучший способ сделать это?

+0

http://stackoverflow.com/questions/15855138/undefined-method-admin-for-nilnilclass –

+0

@ SzilardMagyar У меня нет таблицы логических столбцов с булевым модом, поэтому user.mod? не работает. пользователи могут умерить несколько категорий, а категории могут иметь несколько модов, поэтому я создал таблицу отношений мод. – Rob

ответ

2

Чистый способ сделать это

class User < ActiveRecord::Base 
    def mod_of?(anime_id) 
    anime_mods_relationships.exists?(anime_category_id: anime_id) 
    end 
end 

Затем назвав его в контроллер

if current_user.mod_of? params[:anime_id] 
    # do something 
else 
    # do another thing 
end 
+0

Выглядит отлично. Но как работает этот метод? Как и как узнать, проверяет ли идентификатор категории и идентификатор пользователя в db? – Rob

+0

Я получаю сообщение об ошибке: undefined method 'mod_of? ' для # <Пользователь: 0x007f827d2a40e8> – Rob

+1

Странно, что он не определен. Не могли бы вы разместить всю свою «user.rb» для справки? –

Смежные вопросы