Задать вопрос
AdilA
@AdilA
Нравится кодить, изучаю go c echo

Как правильно добавить города (локацию) для пользователей?

Вопрос супер нубский, как правильно сделать города для юзеров, пример при регистрации юзер указывает город, после чего все его действия указывает на город указанный при регистрации, допустим постит разные посты в блоге, а на страничке с о всеми постами указывается что эти почты принадлежат определенному городу, неужели все просто как дважды два, то есть создать табличку City про писать в моделях cities has_many users, users belongs_to city и все?
  • Вопрос задан
  • 2560 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@eliastro
Создаем 3 модели и связываемых их:
class City < ActiveRecord::Base
	has_many :users
end

class User < ActiveRecord::Base
	has_many :posts
	belongs_to :city
end

class Post < ActiveRecord::Base
	belongs_to :user
end

Далее нам, например, понадобилось при выводе всех постов (экшен index контроллера PostsController) выводить еще и город автора поста. Тогда во вьюхе post index.html.erb вывод города - post.user.city.name. Пример реализации:
<table>
  <thead>
    <tr>
      <th>User</th>
      <th>City</th>
      <th>Text</th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>

  <tbody>
    <% @posts.each do |post| %>
      <tr>
        <td><%= link_to post.user.name, user_path(post.user) %></td>
        <td><%= post.user.city.name %></td>
        <td><%= post.text %></td>
        <td><%= link_to 'Show', post %></td>
        <td><%= link_to 'Edit', edit_post_path(post) %></td>
        <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>


Сам изучаю Рельсы. Может можно и более изящно все сделать. Но проверил - работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Snuff
Молодой человек, пожалуйста почитайте книжки, гайды, посмотрите видео-уроки. После этого, я надеюсь, у вас не будет таких вопросов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы