metaclass: (Default)
[personal profile] metaclass
http://guides.rubyonrails.org/migrations.html#active-record-and-referential-integrity
"The Active Record way claims that intelligence belongs in your models, not in the database. As such, features such as triggers or foreign key constraints, which push some of that intelligence back into the database, are not heavily used."

В ActiveRecord червь не рекомендует делать констрейнты в БД. Это огорчение, т.к. например, я сломал к хуям (т.е. до невозможности вообще хоть что-либо сделать из UI) хипстерское веб-приложение одним SQL-запросом :)

Date: 2013-07-30 06:19 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
а можно спросить, каким образом был отправлен скл запрос не из моделей рельсов?

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

если надо кому-то ещё - слава богу делать веб-сервисы можно практически генератором.

Date: 2013-07-30 06:20 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
ну или если запрос скл шлют рельсы, наверное он был заранее оттестирован в тестовой базе соответствующим тестом?

Date: 2013-07-30 06:28 pm (UTC)
From: [identity profile] metaclass.livejournal.com
mysql -u hipsteruser -phipsterpassword
>insert into HipsterCustomers(name) values('testhipster');

все, приложение умирает на NULL/nil в одном из полей :)

Date: 2013-07-30 06:44 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
[13] pry(main)> Url.create!
(0.2ms) BEGIN
Resource Exists (0.6ms) SELECT 1 AS one FROM `resources` WHERE `resources`.`uuid` IS NULL LIMIT 1
(0.1ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Resource uuid can't be blank, Url can't be blank
from /home/v/.rvm/gems/ruby-1.9.3-p448/gems/pry-exception_explorer-0.1.9/lib/pry-exception_explorer/core_ext.rb:46:in `raise'
[14] pry(main)>

(опа, приложение живёт =)

Date: 2013-07-30 10:02 pm (UTC)
develop7: (dero)
From: [personal profile] develop7
а ещё если БД приложения удалить, то тупые хипстерские рельсы её обратно не поднимают, представляешь?
Edited Date: 2013-07-30 10:02 pm (UTC)

Date: 2013-07-30 11:02 pm (UTC)
From: [identity profile] theiced.livejournal.com
я ему тоже самое сказал ;]

>[1:45:34 PM] Andrew Kirilenko: если крокодила пустить
>[1:45:39 PM] Andrew Kirilenko: то он и drop database сделает
>[1:46:15 PM] Andrew Kirilenko: ну вообще тут тоже самое что и динамической типизацией
>[1:46:21 PM] Andrew Kirilenko: надо чернягу не творить явную
>[1:46:26 PM] Andrew Kirilenko: и всё будет работать заебис

Date: 2013-08-01 03:42 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Дропнет, и напишет, что все надо делать на перле.

Date: 2013-07-31 05:31 am (UTC)
From: [identity profile] metaclass.livejournal.com
А вот например, пользователю на уровне БД можно дать права только на Insert и только в одну таблицу. Без всяких "удалить базу" и прочего там.

Date: 2013-07-31 09:17 am (UTC)
develop7: (dero)
From: [personal profile] develop7
Я когда-то баловался, ещё на пхп. В итоге оказалось удобнее реализовывать ограничения в приложении — и гибче, и проще деплоить, и проще допиливать.

Date: 2013-07-31 09:37 am (UTC)
develop7: (dero)
From: [personal profile] develop7
Вообще это всё имело бы смысл обсуждать, если бы юзеры вашего приложения работали с БД из SQL-клиента, а не из веб- или десктоп-морды.
Edited Date: 2013-07-31 10:08 am (UTC)

Date: 2013-07-31 10:46 am (UTC)
From: [identity profile] metaclass.livejournal.com
Вообще, десктоп-морда у меня - это SQL-клиент, только облагороженный до состояния "может пользоваться любой человек".

Date: 2013-07-31 12:16 pm (UTC)
develop7: (dero)
From: [personal profile] develop7
таки у ваших юзеров аутентификация сервером БД? тогда да, иначе чем GRANTом, будет очень сложно.

Date: 2013-07-31 02:02 pm (UTC)
From: [identity profile] dennab.livejournal.com
Читер!

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2025 09:25 am
Powered by Dreamwidth Studios