This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [arm64-darwin23] | |
$LOAD_PATH << "#{__dir__}/lib" | |
# # lib/first.rb | |
# module First | |
# require 'second' | |
# end | |
# # lib/second.rb | |
# module Second |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
RSpec.describe 'sidekiq-cron' do | |
describe 'config/schedule.yml' do | |
let(:path) { Rails.root.join('config', 'schedule.yml') } | |
before do | |
Sidekiq::Cron::Job.load_from_array(YAML.load_file(path)) | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/models/concerns/enum_attribute.rb | |
module EnumAttribute | |
extend ActiveSupport::Concern | |
class_methods do | |
# Example | |
# Model.enum(:state, [:pending, :complete]) | |
# Model.states #=> { 'pending' => 'PENDING', 'complete' => 'COMPLETE' } | |
# | |
# Model.new(state: 'PENDING').state #=> 'pending' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 指定したレコードの関連の探索処理 | |
# | |
# @example | |
# depth_query = ActiveRecordDepthQuery.new(employee, [attendance: :attendance_records]) | |
# depth_query.each do |relation| | |
# relation.to_a #=> 1度目は従業員に紐づくAttendanceの一覧、2度目はAttendanceRecordの一覧が返ってくる | |
# end | |
class ActiveRecordDepthQuery | |
include Enumerable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb | |
index d1b285101d..9ca4677c6f 100644 | |
--- a/activerecord/lib/active_record/relation/calculations.rb | |
+++ b/activerecord/lib/active_record/relation/calculations.rb | |
@@ -352,9 +352,9 @@ def execute_grouped_calculation(operation, column_name, distinct) # :nodoc: | |
select_values.concat group_columns.map { |aliaz, field| | |
if field.respond_to?(:as) | |
- field.as(aliaz) | |
+ Arel::Nodes::As.new(field, Arel::Table.new(aliaz)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Gemfile b/Gemfile | |
index 8d3bc88..6272179 100644 | |
--- a/Gemfile | |
+++ b/Gemfile | |
@@ -23,6 +23,11 @@ group :development, :test do | |
gem "debug", ">= 1.0.0", platforms: %i[ mri mingw x64_mingw ] | |
end | |
+group :test do | |
+ gem 'rspec' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
RSpec.describe FactoryBot do | |
shared_examples_for 'valid definition' do | |
it 'is valid' do | |
is_expected.to be_valid, (-> { factory.errors.full_messages.join("\n") }) | |
end | |
end | |
FactoryBot.factories.map(&:name).each do |factory_name| |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
paths = Dir[Rails.root.join('config/locales/models/defaults/*.yml')] | |
all_locales = paths.map { |path| YAML.load_file(path) }.inject(&:deep_merge) | |
# has_many用のデフォルトのlocaleを追加する | |
# config/locales/models/defaults/ja.ymlにモデル名が定義されている前提。 | |
# | |
# activerecord/models にある値を複数形にして attributes に変換する | |
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class StrippedString < ActiveModel::Type::String | |
# 左右の空白を除去した文字列クラス | |
# | |
# @param [Object] value | |
# | |
# @return [String, nil] | |
def cast(value) | |
super(value)&.strip&.presence | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# validates :column_name, boolean: true のように使う | |
class BooleanValidator < ActiveModel::EachValidator | |
def validate_each(record, attribute, value) | |
return if value.is_a?(TrueClass) || value.is_a?(FalseClass) | |
record.errors.add(attribute, :not_boolean) | |
end | |
end |
NewerOlder