Ответы пользователя по тегу Ruby on Rails
  • Какие есть нормальные туториалы или уже готовые гемы по написанию чата, как в скайпе\вк\фб на Руби он Рейлс?

    anton9
    @anton9
    Люблю Ruby on Rails
    Очень советую изучить ActionCable, который стал доступен начиная с Rails 5.0
    Вот отличный туториал - https://www.learnenough.com/action-cable-tutorial
    Ответ написан
    Комментировать
  • Как подключить иконки fonts в rails?

    anton9
    @anton9
    Люблю Ruby on Rails
    Попробуйте так:
    файлу добавьте (дополнительно) окончание .erb (т.е. file_name.scss.erb)
    далее
    @font-face {
      font-family: 'glyphicons-halflings-regular';
      src: url(<%= font_path 'glyphicons-halflings-regular.eot' %>);
      src: url(<%= font_path 'glyphicons-halflings-regular.eot?iefix' %>) format('eot'),
      url(<%= font_path 'glyphicons-halflings-regular.woff' %>) format('woff'),
      url(<%= font_path 'glyphicons-halflings-regular.ttf' %>) format('truetype'),
      url(<%= font_path 'glyphicons-halflings-regular.svg#webfont' %>) format('svg');
    }
    Ответ написан
    Комментировать
  • "Пользовательские среды" в приложение Ruby on Rails?

    anton9
    @anton9
    Люблю Ruby on Rails
    Не уверен, правильно ли я все понял, что нужно в конечном итоге, но реализовать можно следующим образом:

    Если хочется заморачиваться и писать собственную авторизацию, то как это с нуля сделать хорошо описано тут:


    Если лень, то можно использоваться гем devise (https://github.com/plataformatec/devise) и при создании модели прописать ей дополнительное поле "роль".

    Соответственно дальше создаете модель "Право".

    rails generate model Permission edit:boolean view:boolean delete:boolean + что ещё на ум придет


    Создаете has_and_belongs_to_many реляцию
    rails generate model UserPermission user:references permission:references


    Например у вас проект открывается сразу в edit-темплейте

    =form_for @project do |f|
    какой-то код
      =f.collection_select(:permission_ids, Permission.all, :id, :permission_title, {include_blank: false, :include_hidden => false, :selected => @project.permissions.map(&:id)}, { class: 'тут какой-то css', :multiple => true})


    Если нужно ограничить права доступа только для этого проекта, то в модель UserPermission добавляем поле project_id
    rails generate model UserPermission user:references permission:references project_id:integer


    а в код формы
    =form_for @project do |f|
    какой-то код
      =f.collection_select(:permission_ids, Permission.all, :id, :permission_title, {include_blank: false, :include_hidden => false, :selected => @project.permissions.map(&:id)}, { class: 'тут какой-то css', :multiple => true})
      =f.fields_for :user_permission do |s|
        =s.hidden_field :project_id, value: @project.id


    Код писался из головы, плюс не совсем уверен, что полностью понял проблему, так что прошу не линчевать, если не на 100% все как нужно.
    Ответ написан
    Комментировать
  • Rails поставить яндекс метрику и jivochat с turbolinks?

    anton9
    @anton9
    Люблю Ruby on Rails
    Допустим переходим на другую страницу через turbolinks и онлайн чат пропадает.


    Как вот эта часть у вас выглядит?

    Если это link_to, то попробуйте прописать дополнительно method: :get
    link_to 'Ссылка', some_link_path, method: :get
    Ответ написан
    Комментировать
  • Как вытащить пост с комментариями по определенной дате?

    anton9
    @anton9
    Люблю Ruby on Rails
    Небольшая ремарка - я так предполагаю, что у вас этот код в контроллере. Такие вещи лучше выносить в модели используя scope и лямбды. В вашем случае это будет
    class Post < ActiveRecord::Base
    
    scope :recent, -> (start_date, end_date) { joins(:comments).where('comments.start_date =>?', 'comments.finish_date <=?', start_date, finish_date)}
    # можно также добавить скоуп для поиска по юзер айди
    scope :by_user, -> (user_id) {where (user_id: user_id)}
    
    # теперь можно слинковать эти скоупы в отдельном методе
    class << self
      def by_user_and_date(user, start, finish)
        by_user(user).recent(start, finish)
      end
    end


    В контроллере вызываем
    @recent_by_user = Post.by_user_and_date(10, Date.today, Date.yesterday)
    Ответ написан
    Комментировать
  • Когда нужно ставить belongs_to, а когда has_one?

    anton9
    @anton9
    Люблю Ruby on Rails
    belongs_to - означает, что у Page есть много Features. Т.е. для обратной связи у Page должно быть
    class Page < ApplicationRecord
      has_many :features
    end


    Таким образом можно вызвать
    page = Page.first
    page.features


    Если такой связи нет, то следует использовать has_one следуя вашей логике.
    Ответ написан
    Комментировать