Я исправил ошибки, которые получил после того, как опробовал большинство рекомендаций без решений. Я начал с просмотра ассоциаций моделей и отключения одного из методов, таких как inverse_of, accepts_nested_attribute_for и attr_accessor, один за другим.
class UserActivity < ApplicationRecord
# ----ASSOCIATION OF MODELS----
# a UserActivity belongs to a User
# and UserActivity belongs to an Activity
belongs_to :user, inverse_of: :user_activities
belongs_to :activity, optional: true, inverse_of: :user_activities
attr_accessor :user_activity_date, :user_activity_start, :user_activity_end, :user_activity_note, :activity_id, :user_id
accepts_nested_attributes_for :activity, :user
# ----MODEL VALIDATIONS----
validates_presence_of :user_activity_end, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_start, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_date, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_note, presence: true, length: { minimum: 10 }, null: false, :message => "cannot be empty"
validates :user, presence: true
validates :activity, presence: true
end
class UserActivity < ApplicationRecord
# ----ASSOCIATION OF MODELS----
# a UserActivity belongs to a User
# and UserActivity belongs to an Activity
belongs_to :user, inverse_of: :user_activities
belongs_to :activity, optional: true, inverse_of: :user_activities
accepts_nested_attributes_for :activity, :user
# ----MODEL VALIDATIONS----
validates_presence_of :user_activity_end, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_start, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_date, presence: true, null: false, :message => "cannot be empty"
validates_presence_of :user_activity_note, presence: true, length: { minimum: 10 }, null: false, :message => "cannot be empty"
validates :user, presence: true
validates :activity, presence: true
end
Started POST "/user_activities" for 127.0.0.1 at 2019-01-18 02:11:27 +0100
Processing by UserActivitiesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Z6DP3METaYH2oczN11Mpewy4K4E1Gj+24twDM4NHI0y2abKn1CnW1M9993+u+3+9Gh4Rmz/k9g+/pVIpCltSNQ==", "user_activity"=>{"activity_id"=>"2", "user_activity_date"=>"2018-12-18", "user_activity_start"=>"09:56", "user_activity_end"=>"11:00", "user_activity_note"=>"still testing for errors in the app"}, "commit"=>"Create User activity"}
The activity ID which is received is -> 2
Date -> 2018-12-18
Start Time -> 09:56
End Time -> 11:00
Activity Note -> still testing for errors in the app
User Load (0.7ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
↳ app/controllers/user_activities_controller.rb:54
(0.4ms) BEGIN
↳ app/controllers/user_activities_controller.rb:57
UserActivity Create (0.7ms) INSERT INTO `user_activities` (`user_activity_date`, `user_activity_start`, `user_activity_end`, `user_activity_note`, `created_at`, `updated_at`, `user_id`, `activity_id`) VALUES ('2018-12-18 00:00:00', '09:56:00', '11:00:00', 'still testing for errors in the app', '2019-01-18 01:11:28', '2019-01-18 01:11:28', 1, 2)
↳ app/controllers/user_activities_controller.rb:57
(0.4ms) COMMIT
↳ app/controllers/user_activities_controller.rb:57
Redirected to http://localhost:3000/user_activities/7
Completed 302 Found in 111ms (ActiveRecord: 4.3ms)
У меня было accepts_nested_attribute_for [ 1111] в модели UserActivity и используемые переменные были точно такими же, как и у уже установленных атрибутов, и поэтому они конфликтовали.
Сразу после того, как я отключил это, я смог сохранить в базу данных, и теперь все работает хорошо.
Я благодарю вас за вашу поддержку, поскольку они дали мне представление о том, куда направить мою технику поиска ошибок.
Существует открытый отчет королевского адвоката об этом, но это только видимо королевскому адвокату sysops.
Состояние "открытых" обычно означает, что признано, что это - ошибка, а не дизайном.
Remy Lebeau - один из разработчиков Инди - сказал это:
Установщик 2009 года действительно поставляет с Инди 9 исходных кодов, но это не можно выбрать во время установки. Существует примечание в документации, что Инди 9 может быть установлена вручную в случае необходимости. Но имейте в виду, что Инди 9 не была обновлена для фактической поддержки 2009. В данный момент я не уверен, будет ли это.
Существуют некоторые изменения в Инди 9 (от версии 2007 года) так, чтобы она скомпилировала под Delphi 2009 (некоторые Строка к изменениям AnsiString), но на основе моих тестов она не работает. Это пытается, но не соединяется. Если Вы хотите, я могу дать Вам изменения, которые были добавлены для поддержки Unicode, но я не полагаю, что они достаточны.
Я не могу действительно ответить почему. Я мог предугадать несколько причин, но у меня нет служебной информации.
Действительно ли безопасно использовать? YMMV. Существует много к Инди, таким образом, могут быть некоторые части, которые хорошо работают для Вашего проекта. Даже простой тест с TIdTCPClient привел к Ошибке Сокета № 11004 каждый раз. То же для TIdHTTP. Кажется, что я попробовал MD5 ранее, и это просто получило мусор, но я не уверен в том.
Ответ: Это было включено по ошибке (предположение), и не безопасно использовать (на основе ограниченных тестов).
Это неудачно, потому что Инди 10 имеет проблемы также, и у меня есть некоторые приложения прежней версии та Инди использования 9.
Indy9 там для совместимости. Были некоторые повреждающиеся изменения в Indy10 (Ваш код, который был написан против Indy9, может не скомпилировать под Indy10), таким образом, у Вас есть опция продолжения использовать Indy9 (я думаю, что установщик запрашивает и спрашивает, какую Инди Вы хотите использовать - по крайней мере, это сделало с D2007).
Обновление: Хорошо несколько человек правильно прокомментировали, что привычка Indy9 компилирует с D2009 (из-за новой поддержки Unicode), таким образом, я предполагаю, что не знаю, почему это там.
Мое предположение, это было в исходном дереве и было автоматически включено установщиком.
Следует иметь в виду, что исходные файлы не используются, если Вы не говорите Delphi перекомпилировать их. Если у Вас не будет Версии для предприятия, то у Вас даже не будет этих папок.