2013-06-03 3 views
0

Я новичок, и мне интересно, будет ли мое приложение неудачным, это ближайшее будущее, потому что я не понимаю всех тонкостей Rails. Поэтому я предпочитаю спросить вас :-)Рекомендации по Rails: общедоступные методы в модели

У меня есть пользователь и модель продукта, и я хочу, чтобы создать метод, который может быть использован как то:

@user.take!(product) 

Так что я написал в моем Пользователь модели следующая строка:

def take!(product) 
    product.owner = self 
end 

Но если я делаю это в частном разделе моей модели, она не работает. И если я сделаю это в публичном разделе, я не знаю, рекомендуется ли это. Я спрашиваю себя, было бы лучше сделать что-то подобное в контроллере или в помощнике ...

Вы меня можете просветить?

ответ

0

Написание общедоступных методов в порядке, если они должны быть общедоступными, это не висящее преступление или что-то в этом роде. Метод, который вы описываете, не должен быть на пользователе, хотя нет необходимости размещать логику продукта внутри модели пользователя, и, безусловно, плохо изменить продукт, передав его в пользовательский метод. Это также очень короткий метод, поэтому его очень трудно получить, поставив его в метод - это просто означает, что если я увижу take!, тогда мне нужно пойти туда и найти, где оно определено, чтобы понять это. Вы также должны использовать только ! в конце методов, которые могут вызвать исключение или изменить объект, на который они вызывают.

Ввод этой логики в контроллер будет прекрасным и понятным, но, в общем, нет ничего плохого в публичных методах, если они не могут быть частными.

+0

Спасибо! В этом случае, в каком контроллере я должен написать свой def? –

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