@rubyschool

Страница 564 из 921
Alex
12.03.2018
09:47:28
с какой?

Alex
12.03.2018
09:47:36




Alex
12.03.2018
09:48:41
validates_presence_of

Google
Alex
12.03.2018
09:48:47
s забыл в слове validates

Alex
12.03.2018
09:48:50


нет, как раз не забыл

http://matchers.shoulda.io/docs/v3.1.1/Shoulda/Matchers/ActiveModel.html#validate_presence_of-instance_method

там не должно быть s на конце

да даже если поставить s ошибка никуда не пропадает он пишет что константа contact не иницилизирована

Alex
12.03.2018
09:52:27
RSpec.describe Contact, :type => :model do

а так?

Alex
12.03.2018
09:53:12
просто прописать в командную строку?

Alex
12.03.2018
09:53:31
заменить в тесте

Alex
12.03.2018
09:54:10
вместо всей модели describe ?



удивительно, результат даже не поменялся

Google
Alex
12.03.2018
09:56:12
Как файл с моделью называется?

Alex
12.03.2018
09:56:47
contact.rb

лежид в models

Alex
12.03.2018
09:59:16
в консоли при обращении к данной модели ошибок нету?

Contact.all например

Это единственный тест? Или есть другие? https://stackoverflow.com/questions/17507416/rspec-doesnt-see-my-model-class-uninitialized-constant-error

Alex
12.03.2018
10:00:47
до других я ещё не дошел

irb(main):001:0> Contact.All NoMethodError: undefined method `All' for Contact (call 'Contact.connection' to establish a connection):Class

Alex
12.03.2018
10:01:21
Наверное ссылка поможет, раз это первый тест

all пишется в нижнем регистре

Alex
12.03.2018
10:01:44
да, заметил

да пишет что пустая база

#<ActiveRecord::Relation []>

Alex
12.03.2018
10:02:16
Наверное ссылка поможет, раз это первый тест

Alex
12.03.2018
10:02:41
до этого я просто rspec тесты делал, без ошибок

но сейчас rspec-rails и с матчером

так там рекомендуется сделать rails generate rspec:install

Я так-то с этого и начал и матчеры установил в rails_helper уже

потому как до этого я уперся в то что rspec знать не знал про функции испольуемые мною из Shoulda Matchers. Только в уроке то используется старая версия а у меня новая. Я сначала подумал что rspec-rails в новых версиях подругому пишутся , ну и написал сюда

я догадался в чем проблема

Google
Alex
12.03.2018
10:15:27
вверху require 'rails_helper'

Alex
12.03.2018
10:15:33
да

но теперь у меня не работает Shoulda matchers

и если я убиру её настроки из rails_helper то все работает, кроме собственно функций этого матчера

Alex
12.03.2018
10:24:34
но теперь у меня не работает Shoulda matchers
заменил require или добавил ниже?

Alex
12.03.2018
10:24:42
заменил

Alex
12.03.2018
10:25:45
require 'shoulda/matchers' в rails_helper есть?

вообще rails_helper на pastebin и ссылку сюда скинь

require 'spec_helper' require 'rspec/rails' require 'shoulda/matchers' и файл spec_helper тоже покажи

Alex
12.03.2018
10:28:04
https://pastebin.com/xt207U9m

https://pastebin.com/pgDYh24g

в последнем spec

Vladimir
12.03.2018
10:29:31
Vladimir
12.03.2018
10:31:40
супер!

Alex
12.03.2018
10:32:10
в доках к shoulda сказано что надо добавить пару 10-ков строк в rails_helper.rb

собственно когда я поменял в тесте require spec на rspec, тест стал работать если не использовать функции shoulda и удалить те строки из rspec_helper

А если строки добавить то ошибка



Google
Alex
12.03.2018
10:38:02
у меня была идея что я просто не туда вставляю, но в доках и не сказано куда это делать, а в rails_helper указано только # Add additional requires below this line. Rails is not loaded until this point! после которой я и добавляю

Alex
12.03.2018
10:40:49
require 'shoulda/matchers' в rails_helper

Alex
12.03.2018
10:43:19
require 'shoulda/matchers' в rails_helper
добавил, та же ошибка что на фото выше

забавно, я нашел решение, надо добавить require File.expand_path('../../config/environment', FILE) в spec_helper

однако, я подумал что раз я использую rails_helper, то надо добавить эту строчку туда, и что вы подумаете?) она уже там есть , хехехе...

Я догнал в чем проблема, все проще некуда...

require 'shoulda/matchers' в rails_helper
Благодарю за помощь, сделал pull request с примечанием в Ruby school

Admin
ERROR: S client not available

Vladimir
12.03.2018
11:16:48
#PR #RubySchool https://github.com/ro31337/rubyschool/pull/17/files/6783bc85108d516d083b98f90bccaf43736e6fc0..127f258812bd513b6e3491b9daf7d2e567def733

Alex
12.03.2018
11:31:36
подскажите, что мне стоит знать про docer , где почитать и сколько это стоит)

Kim
12.03.2018
11:41:36
народ, возник вопрос: как обрабатывать следующие параметры? —-> Parameters: {"utf8"=>"✓", "authenticity_token"=>"ugMTUMCLhS32wdOZJ8dLwVMOB9ojEZR9uJ5fdrGyZTkc4JO/vjZJO83KZ+Fy+2riuHqYQl7W0vrisTT/2cdnfg==", "order"=>{"positions"=>[{"stock_id"=>"1", "provider_id"=>"1", "qty"=>"1"}, {"stock_id"=>"2", "provider_id"=>"3", "qty"=>"1"}, {"stock_id"=>"3", "provider_id"=>"2", "qty"=>"1"}], "title"=>""}, "commit"=>"Update Order", "id"=>"14"}

суть: есть заказ с id=1, он имеет несколько позиций, которые имеют id товара, id поставщика и количество

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

Vlad
12.03.2018
11:47:04
Ну пробежаться по всем positions просто и там уже обработать их. например записывая в модель OrderPosition или OrderProduct которая для этого создана. У которой есть дублирующиеся параметры stock_id, provider_id, qty и собственно order_id (belongs_to :order), чтобы на момент заказа сохранялась информация о цене например именно в момент заказа, например если она изменится после заказа. params["order"]["positions"].each do |position| position["stock_id"] position["provider_id"] position["qty"] end

Или в смысле "как обрабатывать параметры"?

Kim
12.03.2018
11:51:22
я не могу построить цепочку. у меня есть модель Order c полями id, created_at, updated_at. есть модель OrderStock с полями id, created_at, updated_at, order_id, qty, provider_id, stock_id

И я хочу при нажатии заказа чтобы модель OrderStock заполнялась

а сейчас я имею параметры и не могу никак подружить Order и OrderStock

с этитми nested params

Google
Kim
12.03.2018
11:53:44
надеюсь понтно, что я хочу))

Vlad
12.03.2018
11:55:34
Ну в OrderStock (это типа товары заказа?) надо чтобы было прописано в модели belongs_to :order И пишем типа если у нас Order уже создан, то пишем order = Order.find params[:id] (в нашем случае 14) params["order"]["positions"].each do |position| OrderStock.create(order_id: order.id, provider_id: position["provider_id"], stock_id: position["position_id"], qty: position["qty"] end Ну это если тупым таким образом когда все передается в параметрах. Можно сделать через accepts_nested_attributes_for http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

Kim
12.03.2018
11:57:18
брррр

попробую пока по тупому

спасибо

А Order has_may :order_stocks, верно?

Vlad
12.03.2018
12:01:31
Ну да, чтобы потом можно было обратиться order.order_stocks

Kim
12.03.2018
12:01:45
буду пробовать ,спасибо большое

Alex
12.03.2018
13:18:30
c Factory_girl у меня тоже проблемы были, сделал реквест ещё один с примечанием

кто-нибудь может объяснить в чем разница между validates :title, presence: true и validates_presence_of :title

если я правильно понял то разница просто в синтаксисе, один для 2-ой версии, другой для 3+ rails

Я хочу сделать тест на проверку валидации в ограничение на 140 символов строки, у меня есть функция в shoulda matchers validate_length_of(:something).is_at_most(140)

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

Kim
12.03.2018
17:03:47
Ну да, чтобы потом можно было обратиться order.order_stocks
ну, по тупому все сделалось) спасибо) осталось разобраться, как сделать не по тупому...

Vladimir
12.03.2018
17:20:01
... значит всё не так уж плохо на сегодняшний день, и билет на самолёт...

Andrey
12.03.2018
17:54:41
Alex
12.03.2018
17:55:57
Рубокоп говорит что validates-of устаревший вариант :)
мое недовольство в том что матчер который я использую мимикрирует под устаревний вариант (

Страница 564 из 921