2016-05-31 5 views
0

Я разрабатываю приложение «менеджер расходов», которое помогает пользователям управлять своими расходами и генерировать отчеты с помощью Графиков, а также может сортировать расходы по дате или периоду времени.Как установить некоторые значения по умолчанию в столбце в rails

Пользователь может войти в систему, чтобы добавить расходы и выбрать категорию для каждого расхода из раскрывающегося списка.

Upto здесь все прошло хорошо, но я был застрял с сомнением, если есть возможность добавить некоторые категории по умолчанию в таблицу категорий, когда пользователь зарегистрируется. У меня также есть требование, чтобы пользователь удалял эти категории по умолчанию, которые не должны влиять на другие категории пользователей.

Пожалуйста, предложите мне понять, как мы можем справиться с этим требованием, вместо использования данных Seed.

Миграция для создания категорий

class CreateCategories < ActiveRecord::Migration 
    def change 
    create_table :categories do |t| 
     t.string :name 

     t.timestamps null: false 
    end 
    end 
end 

Категория спускающимися в счет новой формы

<div class="form-group"> 
     <%= f.label :category, "Category:" %><br> 
    <div class="col-md-2">  
     <%= f.collection_select(:category_id, current_user.categories, :id, :name, {}, { :class => "select_box selectpicker picker"}) %> 
    </div> 
    </div> 

Git репозиторий этого приложения: https://github.com/atchyut-re/expense_manager

Надежда Я ясно, если Мне нужно дать дополнительную информацию, пожалуйста, укажите в комментарии.

ответ

1

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

class User < ActiveRecord::Base 
    before_create :create_default_categories 

    DEFAULT_CATEGORIES = [ 
    {name: 'default name 1', other_attribute: 'default other attribute 1'}, 
    {name: 'default name 2', other_attribute: 'default other attribute 2'} 
    ] 

    def create_default_categories 
    DEFAULT_CATEGORIES.each do |default_attrs| 
     self.categories.build(default_attrs) 
    end 
    end 
end 

Так что, когда был создан пользователь, категория по умолчанию будет создана, как хорошо!

+0

Это приведет к созданию дополнительных 'категорий', если создание' user' не выполнено. – Emu

+0

Hey Hieu Pham, это было здорово! Я просто попробую и вернусь к вам. Спасибо за ваш быстрый ответ :) –

+0

Нет, категории не будут созданы, если пользователь создал сбой !, как вы видите, я использую 'build' вместо' create' –

2

Создать after_create Обратный звонок в вашей модели user для создания категорий. Поскольку категории зависят от пользователя, тогда должна быть связь между user & categories.

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