Я изучаю RoR, и моя база данных разработки используется по умолчанию, sqlite, и я развертываю свое приложение в Heroku, которое использует posgresql. Я понимаю, что для избежания таких проблем, я должен разрабатывать и с postgresql, и в будущем я собираюсь это сделать. Однако у меня есть проблема, которая появляется в производстве, но не в разработке.
Проблема: у меня есть модели User
и Account
. У User
может быть много Accounts
.
Я сделал миграцию, чтобы при создании Account
для его поля active
по умолчанию было установлено значение true
.
class UpdateDefaultAccountActiveValue < ActiveRecord::Migration
def change
change_column_default(:accounts, :active, true)
end
end
Кажется, это работает в dev.
В /views/accounts/index.html.erb
следующий код выводит true
или false
в зависимости от того, активна учетная запись или нет.
<% @accounts.each do |account| %>
<tr>
<% if !(account.credit) %>
<td><%= link_to account.name, history_url(id: account.id) %></td>
<% else %>
<td><%= link_to account.name + ' (Credit)', history_url(id: account.id) %></td>
<% end %>
<td><%= account.active %></td>
<td><%= link_to 'Edit', edit_account_path(account) %></td>
</tr>
<% end %>
Однако в производственной среде /views/accounts/index.html.erb
не выводит true
или false
в зависимости от того, активна учетная запись или нет.
Почему это и как я могу это решить?
бумажный журнал:
2016-05-25T21:34:06.348465+00:00 app[web.1]: Started GET "/accounts" for 176.248.123.34 at 2016-05-25 21:34:06 +0000
2016-05-25T21:34:06.355649+00:00 app[web.1]: Processing by AccountsController#index as HTML
2016-05-25T21:34:06.447420+00:00 app[web.1]: Completed 200 OK in 94ms (Views: 64.5ms | ActiveRecord: 18.2ms)
2016-05-25T21:34:06.452111+00:00 heroku[router]: at=info method=GET path="/accounts" host=???.herokuapp.com request_id=f33ab960-5c1b-4883-a28c-8c2b40388bad fwd="176.248.123.34" dyno=web.1 connect=0ms service=107ms status=200 bytes=4073
$heroku run rails console
в терминале, найдите экземпляр учетной записи и проверьте атрибут. Если ноль, найдите все экземпляры класса и установите его в значение true. Затем добавьте ограничениеnull: false
в столбец базы данных с миграцией. Дополнительно: измените порядок двух опций и используйте<% if account.credit %>
. И вам следует как можно скорее изменить базу данных разработки на pg. - person Sean Magyar   schedule 26.05.2016$heroku logs --tail
2. из papertrail: вы просто нажимаете на papertrail из панели управления heroku - person Sean Magyar   schedule 26.05.2016200
. Вы проверили значения атрибута логического поля? - person Sean Magyar   schedule 26.05.2016