Создать новых помощников - PullRequest
2 голосов
/ 15 марта 2012

У меня есть приложение для рельсов. Например, у меня есть следующие модели: User, Post. User модель была сгенерирована Devise. Модель Post имеет столбцы text и user_id. Отношения: Пользователь has_many :posts и Пост belongs_to :user. Мне нужно определить, кто является владельцем поста. Например, владелец может редактировать свои сообщения. Если я правильно понимаю, мне нужно создать несколько помощников. Я новичок на рельсах и не понимаю, кто это делает. Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 15 марта 2012

Термин «помощник» может сбивать с толку.Если вы используете генераторы rails, вы получите файл в каталоге app/helpers с именем <model>s_helper.rb.Здесь вы можете определить методы, которые непосредственно доступны в ваших шаблонах представления.Например, вы можете определить метод с именем pronoun на основе значения, хранящегося в поле gender вашей пользовательской модели, например

def pronoun(user)
  case user.gender
    when "M"
      "his"
    when "F"
      "her"
    else
      "their"
  end
end

, поэтому в представлении, ссылающемся на некоторого пользователя, вы можете сделать1008 *

<%= @user.name %> got <%= pronoun(@user) %> ice cream in <%= @user.city %>.

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

def status_name
  if created_at > 30.days.ago
    "old timer"
  else
    "noob"
end

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

Как правило, методы модели меньшео представлении и больше о логике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...