@proRuby

Страница 208 из 1594
Иван
27.09.2016
06:15:42
вроде ничего так

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

Anon
27.09.2016
06:20:43
спасибо, посмотрю

Amir
27.09.2016
06:37:04
@messages = Message.joins(:receiver => :department).where(User.table_name => { DepartmentID: ids }).joins(:journal, :initiator)

Google
Amir
27.09.2016
06:37:09
вот так работает

но видите я там сразу указал имя таблицы а не алиас

как получить доступ к алисам соединенных таблиц?

или задать свое имя алиаса

Message.joins(:receiver) Как здесь сделать свой алиас, потом использовать этот алиас в условии where

Message.joins(:receiver).where(recievers: {условие}) канает если ваша таблица случайным образом называется receivers

Adamtsov
27.09.2016
06:41:57
не случайным образом, когда делаться Model.joins(:foo), то foo - это названии ассоциации, а в where подставляется название таблицы

Amir
27.09.2016
06:48:31
вооот

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

два джойна на одну и ту же таблицу

притом имя таблицы задается в модели self.table_name = "TableI1" self.table_name = "Table2"

и соотвественно в активрекорд выходха вроде where(:users => {условие}) не канает т.к. в SQL запросе ставит условие users.field1 = 1 а не реальное называние таблицы, или алиаса

это просто случайное совпадение в рельцах когда все работает, когда БД само рельцы генерируют

Google
Adamtsov
27.09.2016
06:51:51
так если название таблицы указывается table1, то в where надо и писать table1

или так не работает?

Amir
27.09.2016
06:52:22
не могу так, т.к. рельцы там по своему назвали, и дали алиас

после LEFT JONI table1 table_table1 on table_table1.id=foo.id1 после LEFT JONI table1 table_table2 on table_table2.id=foo.id2 where table1 —--> и тут как скл поймет какая таблица

оказывается когда пишем where(table1: {:qwe: 1}) просто совпадение что в базе таблица называется table1

хотя это я все затеял на рельцах 4

может на 5 нормально

а все изза того что не нашел подходящего адаптера на MSSQL 2008 R2

на рельцах 5, толлько 2012 поддерживает

Adamtsov
27.09.2016
07:00:40
ну тут я уже хз, я такое сейчас не делал

как вариант на sql писать

Amir
27.09.2016
07:01:02
tiny_tds?

Adamtsov
27.09.2016
07:01:21
?

Dima
27.09.2016
07:09:09
Зачем используется астерикс: inventory =['apples', 17, 'oranges', 11, 'pears', 22] Hash[*inventory] ?

Иван
27.09.2016
07:16:03
разворачивает массив в список аргументов

которые метод принимает

Amir
27.09.2016
07:17:16
@messages = Message.joins("INNER JOIN #{User.table_name} as ttt on ttt.ID = #{Message.table_name}.ReceiverID LEFT JOIN #{Department.table_name} ddd on ddd.ID=ttt.D epartmentID").where(:ttt => { DepartmentID: ids }).joins(:journal, :initiator) так делать чтоли каждый раз?

работает

Dima
27.09.2016
07:20:09
разворачивает массив в список аргументов
спасибо. нашел что это знаывается splat operator

Нижнее подчеркивание в данной примере: _, *unquoted, _ = '"quoted"'.split(//) - это какая-то конструкция языка?

Google
I
27.09.2016
07:42:15
да нет

это то, на что тебе похер

в python и js так же делать можно

Dima
27.09.2016
07:46:37
да нет
просто переменная получается?

I
27.09.2016
07:48:18
ну вообще да, но это общепринятое соглашение для того, чтобы описывать параметр, который не используется

Amir
27.09.2016
08:08:24
@messages = Message.joins(:journal, :initiator) @messages = @messages.joins(:receiver => :department ) @messages = @messages.where("receivers_#{Message.table_name}" => { DepartmentID: ids } ) @messages = @messages.where(CreateDateTime: date_start..date_end) может поправите?

Igor
27.09.2016
08:09:17
Нижнее подчеркивание - это нотация симольных языков (в первую очередь LISP), там очень часто возникает ситуация, когда вы не можете не указывать переменную, а далее она не используется. От туда это обозначение и пошло

I
27.09.2016
08:09:32
ох таблица и camelCase и snakeCase, прекрасно

а почему где-то :receiver => :department, а где-то CreateDateTime:

Amir
27.09.2016
08:11:35
потомучто база не рельцовая

I
27.09.2016
08:12:07
а что генерируется @messages = @messages.where("receivers_#{Message.table_name}" => { DepartmentID: ids } ) ?

Amir
27.09.2016
08:12:14
.where("receivers_#{Message.table_name}" мне пришлось так указать условие к присоединяемой таблице, лучшего способа не смог придумать

I
27.09.2016
08:13:05
а у Message нет никакого relation’a типа receivers?

ну, это же было бы круто

Amir
27.09.2016
08:13:12
есть

I
27.09.2016
08:13:26
и почему бы тогда не его брать?

Amir
27.09.2016
08:13:38
как?

он ставит там фигню в SQL

where("receivers_#{Message.table_name}" => { DepartmentID: ids } только так работает

Google
Amir
27.09.2016
08:14:30
там он генерит алиас, я его угадал и прописал вручную вот так

I
27.09.2016
08:14:42
ну не зная структуры базы пальцем в небо тыкать точно никто не станет

Amir
27.09.2016
08:15:49
у Message есть два соединенных таблиц, reciever, initiator вот их надо соединить, потом надо условие к первому таблице надо сделать

с 1 соединением не было бы проблем

хотя хз, всеравно проблема есть, т.к. имя таблицы не совсем как думает Рельцы а указывается в модели self.table_name = "MYTABLEUSER"

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

да вообще ни как указать нельзя как сейчас понимаю

I
27.09.2016
08:19:03
да можно, не придумывайте

Amir
27.09.2016
08:19:13
только как задумали авторы рельцы where(simpename: {f1: 11})

sql получается where simplename.f1 = 111

Admin
ERROR: S client not available

Amir
27.09.2016
08:19:52
он не умеет ставить алиас к условии

только то что указал в символе

Foo.joins(:foo2).where(foo2s: {f1: 111} ) только так умеет

символ foo2s будет принимать как имя таблицы

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

I
27.09.2016
08:23:20
@messages = @messages.where("receivers_#{Message.table_name}" => { DepartmentID: ids } ) вообще тут хорошо бы зашел scope, кстати

Amir
27.09.2016
08:24:44
нет, подразумевается еще что будет много фильтров вот такими соединениями

хотел сделать фо феншую, по рубовски, рельцовски но видать придется как всегда по хардкору на чистом SQL и PHP боже упаси

I
27.09.2016
08:28:12
ну, удачи, конечно, но я уверен, что это можно сделать по-человечески

Google
Amir
27.09.2016
08:28:35
странно что нельзя вмешивать в запросе и указать свое имя алиаса таблицы где нибудь как нибудь так: Foo.joins(:moo as: "MYMOO").where(MYMOO: { fff: 111} )

было бы не плохо

I
27.09.2016
08:28:48
а зачем?

а так никто не мешает вкрячить в joins SQL-statement и получить нужное

Foo.joins(«LEFT JOIN moo AS MYMOO»)

но цели все равно не понимаю

Amir
27.09.2016
08:31:04
ага, нечто подобное сделал, но выглядит ужасно на чисто SQL будет красивее и понятнее

1 class Message < ActiveRecord::Base 2 self.table_name = "ViewLDMail" 3 self.primary_key = "ID" 4 belongs_to :journal, foreign_key: "JournalID" 5 belongs_to :initiator, foreign_key: "InitiatorID", class_name: "User" 6 belongs_to :receiver, foreign_key: "ReceiverID", class_name: "User" 7 end

я просто хотел сделать на чистом AR

и красиво вывести любую инфу таким образом <td><%= msg.receiver.Name %></td> <td><%= msg.receiver.department.Name %></td> <td><%= msg.journal.Name %></td>

разве не в этом суть ООП ? :)

I
27.09.2016
08:45:19
а у User есть DepartmentID, да?

Amir
27.09.2016
08:52:21
ага

I
27.09.2016
08:54:17
а что за receivers_ViewLDMail?

что в ней валяется?

kolas
27.09.2016
08:57:12
Сказали же н+1 это фича

Не оптимизируй?

Alex
27.09.2016
12:55:39
Накладывать тесты на уже существующий проект это жесть конечно.

Плюшка
27.09.2016
12:56:03
Roman
27.09.2016
13:57:50
на хироку можно файлы загружать?

есть лимит по объему ?

Dima
27.09.2016
14:18:24
Есть люди которые качественно знают английский язык? 1) Instead, modules get mixed in to classes, using the include method. 2) Instead, it’s defined in a module that the class mixes in. 3) but also those of (in one case) a superclass or (in the other case) a mixed-in module. Как на русский язык гладго переводить вот эти вот mixed in to, module that tha class mixes in и т.д. Как вообще определяется в нюансках велкого и могучего языка кто куда что подмешал.

Именно лингвестический вопрос.

Страница 208 из 1594