imyou 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +4 -4
- data/.github/workflows/test.yml +22 -2
- data/.rubocop.yml +43 -0
- data/.rubocop_todo.yml +23 -0
- data/Gemfile +4 -2
- data/Rakefile +4 -2
- data/bin/console +7 -6
- data/gemfiles/rails_5.0.gemfile +3 -0
- data/gemfiles/rails_5.1.gemfile +3 -1
- data/gemfiles/rails_5.2.gemfile +2 -0
- data/gemfiles/rails_6.0.gemfile +2 -0
- data/gemfiles/rails_6.1.gemfile +2 -0
- data/gemfiles/rails_7.0.gemfile +2 -0
- data/gemfiles/rails_7.1.gemfile +13 -0
- data/imyou.gemspec +26 -17
- data/lib/generators/imyou/migration/migration_generator.rb +13 -11
- data/lib/generators/imyou/migration/templates/active_record/migration.rb +2 -0
- data/lib/imyou/models.rb +49 -46
- data/lib/imyou/nickname.rb +5 -3
- data/lib/imyou/version.rb +3 -1
- data/lib/imyou.rb +3 -1
- metadata +145 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 278f2d48be71f012125f73bbbabeff323db5f293666bfe9dc59255faa7a33b86
|
4
|
+
data.tar.gz: c3f3e7024e7c8264ecdc2bcda662b69e743d67a0e0f1becacf1588eff67f4a4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a09ba720d0328aa1c6c1406dd53b6941c4364b0e8fe0d5f7c4ca2f6be620469639f88f6fd5cd17d0c14bec33889287493f7f6ddcc9741287516f239e4e4fa14
|
7
|
+
data.tar.gz: ddd0916204db55c4b0f377616b06fb55a9d53b10e3562ab7f466379d89249d3c801b2861ef25eb667e3a36a6889831ed093b79480cb7715911936bbaa68c75a5
|
@@ -12,11 +12,11 @@ jobs:
|
|
12
12
|
packages: write
|
13
13
|
|
14
14
|
steps:
|
15
|
-
- uses: actions/checkout@
|
16
|
-
- name: Set up Ruby
|
17
|
-
uses:
|
15
|
+
- uses: actions/checkout@v4
|
16
|
+
- name: Set up Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
18
|
with:
|
19
|
-
ruby-version:
|
19
|
+
ruby-version: "3.1"
|
20
20
|
|
21
21
|
- name: Publish to RubyGems
|
22
22
|
run: |
|
data/.github/workflows/test.yml
CHANGED
@@ -11,11 +11,13 @@ jobs:
|
|
11
11
|
runs-on: ubuntu-latest
|
12
12
|
strategy:
|
13
13
|
matrix:
|
14
|
-
ruby: ['2.6', '2.7', '3.0', '3.1']
|
15
|
-
gemfile: ['rails_5.0', 'rails_5.1', 'rails_5.2', 'rails_6.0', 'rails_6.1', 'rails_7.0']
|
14
|
+
ruby: ['2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
|
15
|
+
gemfile: ['rails_5.0', 'rails_5.1', 'rails_5.2', 'rails_6.0', 'rails_6.1', 'rails_7.0', 'rails_7.1']
|
16
16
|
exclude:
|
17
17
|
- ruby: '2.6'
|
18
18
|
gemfile: 'rails_7.0'
|
19
|
+
- ruby: '2.6'
|
20
|
+
gemfile: 'rails_7.1'
|
19
21
|
- ruby: '3.0'
|
20
22
|
gemfile: 'rails_5.0'
|
21
23
|
- ruby: '3.0'
|
@@ -28,6 +30,24 @@ jobs:
|
|
28
30
|
gemfile: 'rails_5.1'
|
29
31
|
- ruby: '3.1'
|
30
32
|
gemfile: 'rails_5.2'
|
33
|
+
- ruby: '3.2'
|
34
|
+
gemfile: 'rails_5.0'
|
35
|
+
- ruby: '3.2'
|
36
|
+
gemfile: 'rails_5.1'
|
37
|
+
- ruby: '3.2'
|
38
|
+
gemfile: 'rails_5.2'
|
39
|
+
- ruby: '3.3'
|
40
|
+
gemfile: 'rails_5.0'
|
41
|
+
- ruby: '3.3'
|
42
|
+
gemfile: 'rails_5.1'
|
43
|
+
- ruby: '3.3'
|
44
|
+
gemfile: 'rails_5.2'
|
45
|
+
- ruby: '3.4'
|
46
|
+
gemfile: 'rails_5.0'
|
47
|
+
- ruby: '3.4'
|
48
|
+
gemfile: 'rails_5.1'
|
49
|
+
- ruby: '3.4'
|
50
|
+
gemfile: 'rails_5.2'
|
31
51
|
env:
|
32
52
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
|
33
53
|
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
require:
|
4
|
+
- rubocop-performance
|
5
|
+
- rubocop-rake
|
6
|
+
- rubocop-minitest
|
7
|
+
|
8
|
+
AllCops:
|
9
|
+
NewCops: enable
|
10
|
+
TargetRubyVersion: 2.6
|
11
|
+
Exclude:
|
12
|
+
- 'lib/generators/imyou/migration/templates/active_record/migration.rb'
|
13
|
+
|
14
|
+
Layout/LineLength:
|
15
|
+
AllowHeredoc: true
|
16
|
+
AllowURI: true
|
17
|
+
|
18
|
+
Metrics/BlockLength:
|
19
|
+
IgnoredMethods:
|
20
|
+
- describe
|
21
|
+
- refine
|
22
|
+
- class_eval
|
23
|
+
Exclude:
|
24
|
+
- 'lib/imyou/models.rb'
|
25
|
+
Layout/DotPosition:
|
26
|
+
EnforcedStyle: trailing
|
27
|
+
|
28
|
+
Style/Documentation:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Naming/PredicateName:
|
32
|
+
AllowedMethods:
|
33
|
+
- has_imyou
|
34
|
+
- has_imyou?
|
35
|
+
Exclude:
|
36
|
+
- 'spec/**/*'
|
37
|
+
|
38
|
+
Metrics/ModuleLength:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
Metrics/MethodLength:
|
42
|
+
IgnoredMethods:
|
43
|
+
- has_imyou
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2022-01-14 02:32:22 UTC using RuboCop version 1.24.1.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
11
|
+
Metrics/AbcSize:
|
12
|
+
Max: 141
|
13
|
+
|
14
|
+
# Offense count: 1
|
15
|
+
# Configuration parameters: IgnoredMethods.
|
16
|
+
Metrics/CyclomaticComplexity:
|
17
|
+
Max: 22
|
18
|
+
|
19
|
+
|
20
|
+
# Offense count: 1
|
21
|
+
# Configuration parameters: IgnoredMethods.
|
22
|
+
Metrics/PerceivedComplexity:
|
23
|
+
Max: 30
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in imyou.gemspec
|
6
8
|
gemspec
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'imyou'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
8
9
|
|
9
10
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
require
|
11
|
-
Pry.start
|
11
|
+
# require 'pry'
|
12
|
+
# Pry.start
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/gemfiles/rails_5.0.gemfile
CHANGED
data/gemfiles/rails_5.1.gemfile
CHANGED
data/gemfiles/rails_5.2.gemfile
CHANGED
data/gemfiles/rails_6.0.gemfile
CHANGED
data/gemfiles/rails_6.1.gemfile
CHANGED
data/gemfiles/rails_7.0.gemfile
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gem 'activerecord', '~> 7.1.3'
|
6
|
+
|
7
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
8
|
+
gem 'sqlite3', '~> 2.0'
|
9
|
+
else
|
10
|
+
gem 'sqlite3', '~> 1.4'
|
11
|
+
end
|
12
|
+
|
13
|
+
gemspec path: '../'
|
data/imyou.gemspec
CHANGED
@@ -1,32 +1,41 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
5
|
+
require 'imyou/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = 'imyou'
|
9
9
|
spec.version = Imyou::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
10
|
+
spec.authors = ['patorash']
|
11
|
+
spec.email = ['chariderpato@gmail.com']
|
12
12
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
-
spec.homepage =
|
16
|
-
spec.license =
|
13
|
+
spec.summary = 'Imyou has feature of attaching popular name to ActiveRecord model.'
|
14
|
+
spec.description = 'Imyou has feature of attaching popular name to ActiveRecord model.'
|
15
|
+
spec.homepage = 'https://github.com/patorash/imyou'
|
16
|
+
spec.license = 'MIT'
|
17
17
|
|
18
18
|
# Specify which files should be added to the gem when it is released.
|
19
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
-
spec.files = Dir.chdir(File.expand_path(
|
20
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
21
21
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
22
|
end
|
23
|
-
spec.bindir =
|
23
|
+
spec.bindir = 'exe'
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
|
-
spec.require_paths = [
|
26
|
-
spec.required_ruby_version = '>= 2.
|
25
|
+
spec.require_paths = ['lib']
|
26
|
+
spec.required_ruby_version = '>= 2.6'
|
27
27
|
|
28
|
-
spec.add_dependency 'activerecord', '< 7.
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_dependency 'activerecord', '< 7.2.0', '>= 5.0.0'
|
29
|
+
spec.add_development_dependency 'database_cleaner', '< 3.0', '>= 1.99.0'
|
30
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
31
|
+
spec.add_development_dependency 'rubocop', '~> 1.24'
|
32
|
+
spec.add_development_dependency 'rubocop-minitest', '~> 0.17'
|
33
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.13'
|
34
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.6'
|
35
|
+
spec.add_development_dependency 'sqlite3', '< 3.0', '>= 1.3'
|
36
|
+
spec.add_development_dependency 'concurrent-ruby', '1.3.4'
|
37
|
+
spec.add_development_dependency 'mutex_m', '~> 0.1'
|
38
|
+
spec.add_development_dependency 'bigdecimal', '~> 3.0'
|
39
|
+
spec.add_development_dependency 'base64', '~> 0.1'
|
40
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
32
41
|
end
|
@@ -1,41 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails/generators/migration'
|
2
4
|
|
3
5
|
module Imyou
|
4
6
|
class MigrationGenerator < Rails::Generators::Base
|
5
7
|
include Rails::Generators::Migration
|
6
8
|
|
7
|
-
desc
|
9
|
+
desc 'Generators migration for Imyou(imyous table)'
|
8
10
|
|
9
11
|
def self.orm
|
10
12
|
Rails::Generators.options[:rails][:orm]
|
11
13
|
end
|
12
14
|
|
13
15
|
def self.source_root
|
14
|
-
File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.
|
16
|
+
File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.instance_of?(String)))
|
15
17
|
end
|
16
18
|
|
17
19
|
def self.orm_has_migration?
|
18
20
|
[:active_record].include? orm
|
19
21
|
end
|
20
22
|
|
21
|
-
def self.next_migration_number(
|
22
|
-
Time.now.utc.strftime(
|
23
|
+
def self.next_migration_number(_path)
|
24
|
+
Time.now.utc.strftime('%Y%m%d%H%M%S')
|
23
25
|
end
|
24
26
|
|
25
27
|
def create_migration_file
|
26
|
-
|
27
|
-
|
28
|
-
|
28
|
+
return unless self.class.orm_has_migration?
|
29
|
+
|
30
|
+
migration_template 'migration.rb',
|
31
|
+
'db/migrate/imyou_migration.rb',
|
32
|
+
migration_version: migration_version
|
29
33
|
end
|
30
34
|
|
31
35
|
def migration_version
|
32
|
-
if over_rails5?
|
33
|
-
"[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
|
34
|
-
end
|
36
|
+
"[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" if over_rails5?
|
35
37
|
end
|
36
38
|
|
37
39
|
def over_rails5?
|
38
40
|
Rails::VERSION::MAJOR >= 5
|
39
41
|
end
|
40
42
|
end
|
41
|
-
end
|
43
|
+
end
|
data/lib/imyou/models.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Imyou
|
2
4
|
module Models
|
3
5
|
def has_imyou?
|
4
6
|
false
|
5
7
|
end
|
6
8
|
|
7
|
-
def has_imyou(name_column=nil)
|
9
|
+
def has_imyou(name_column = nil)
|
8
10
|
class_eval do
|
9
|
-
|
10
|
-
|
11
|
+
has_many :imyou_nicknames, lambda {
|
12
|
+
order(id: :asc)
|
13
|
+
}, class_name: 'Imyou::Nickname', as: :model, dependent: :destroy
|
11
14
|
|
12
15
|
accepts_nested_attributes_for :imyou_nicknames,
|
13
16
|
allow_destroy: true,
|
@@ -15,66 +18,70 @@ module Imyou
|
|
15
18
|
|
16
19
|
scope :with_nicknames, -> { preload(:imyou_nicknames) }
|
17
20
|
|
18
|
-
scope
|
21
|
+
# 本来はscopeで定義するべきだが、Ruby 3.2以降とActiveRecord 6.1系ではエラーになるため、
|
22
|
+
# 苦肉の策で特異メソッドとして定義する。
|
23
|
+
# Rails 6.1のサポートを終了したら、scopeに戻すこと。
|
24
|
+
# @see https://qiita.com/usk0513/items/c2968733415c806f56fc
|
25
|
+
define_singleton_method(:match_by_nickname) do |nickname, with_name_column: true|
|
19
26
|
if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new(5)
|
20
|
-
records =
|
27
|
+
records = left_outer_joins(:imyou_nicknames).where(Imyou::Nickname.arel_table[:name].eq(nickname))
|
21
28
|
unless name_column.nil? || with_name_column == false
|
22
|
-
records.or!(
|
29
|
+
records.or!(left_outer_joins(:imyou_nicknames).where(name_column => nickname))
|
23
30
|
end
|
24
31
|
else
|
25
|
-
joined_records =
|
32
|
+
joined_records = joins(<<~SQL)
|
26
33
|
LEFT OUTER JOIN #{Imyou::Nickname.quoted_table_name}
|
27
34
|
ON
|
28
|
-
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{
|
35
|
+
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{quoted_table_name}.#{connection.quote_column_name(:id)}
|
29
36
|
AND
|
30
|
-
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(
|
37
|
+
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(name)}
|
31
38
|
SQL
|
32
|
-
)
|
33
39
|
arel_nickname_column = Imyou::Nickname.arel_table[:name]
|
34
40
|
records = if name_column.nil? || with_name_column == false
|
35
41
|
joined_records.where(
|
36
|
-
|
42
|
+
arel_nickname_column.eq(nickname)
|
37
43
|
)
|
38
44
|
else
|
39
|
-
arel_name_column =
|
45
|
+
arel_name_column = arel_table[name_column]
|
40
46
|
joined_records.where(
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
arel_nickname_column.eq(nickname).or(
|
48
|
+
arel_name_column.eq(nickname)
|
49
|
+
)
|
44
50
|
)
|
45
51
|
end
|
46
52
|
end
|
47
53
|
records
|
48
54
|
end
|
49
55
|
|
50
|
-
|
56
|
+
define_singleton_method(:partial_match_by_nickname) do |nickname, with_name_column: true|
|
51
57
|
if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new(5)
|
52
|
-
records =
|
58
|
+
records = left_outer_joins(:imyou_nicknames).
|
59
|
+
where(Imyou::Nickname.arel_table[:name].
|
60
|
+
matches("%#{sanitize_sql_like(nickname)}%", '\\'))
|
53
61
|
unless name_column.nil? || with_name_column == false
|
54
|
-
records.or!(
|
55
|
-
|
56
|
-
|
62
|
+
records.or!(left_outer_joins(:imyou_nicknames).where(
|
63
|
+
arel_table[name_column].matches("%#{sanitize_sql_like(nickname)}%", '\\')
|
64
|
+
))
|
57
65
|
end
|
58
66
|
else
|
59
|
-
joined_records =
|
67
|
+
joined_records = joins(<<~SQL)
|
60
68
|
LEFT OUTER JOIN #{Imyou::Nickname.quoted_table_name}
|
61
69
|
ON
|
62
|
-
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{
|
70
|
+
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{quoted_table_name}.#{connection.quote_column_name(:id)}
|
63
71
|
AND
|
64
|
-
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(
|
72
|
+
#{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(name)}
|
65
73
|
SQL
|
66
|
-
)
|
67
74
|
arel_nickname_column = Imyou::Nickname.arel_table[:name]
|
68
75
|
records = if name_column.nil? || with_name_column == false
|
69
76
|
joined_records.where(
|
70
|
-
|
77
|
+
arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
|
71
78
|
)
|
72
79
|
else
|
73
|
-
arel_name_column =
|
80
|
+
arel_name_column = arel_table[name_column]
|
74
81
|
joined_records.where(
|
75
|
-
|
76
|
-
|
77
|
-
|
82
|
+
arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\').or(
|
83
|
+
arel_name_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
|
84
|
+
)
|
78
85
|
)
|
79
86
|
end
|
80
87
|
end
|
@@ -90,51 +97,47 @@ module Imyou
|
|
90
97
|
|
91
98
|
def nicknames
|
92
99
|
if new_record?
|
93
|
-
|
100
|
+
imyou_nicknames.map(&:name)
|
94
101
|
else
|
95
|
-
|
102
|
+
imyou_nicknames.pluck(:name)
|
96
103
|
end
|
97
104
|
end
|
98
105
|
|
99
106
|
def remove_all_nicknames
|
100
|
-
|
107
|
+
imyou_nicknames.delete_all
|
101
108
|
end
|
102
109
|
|
103
110
|
def add_nickname(nickname)
|
104
111
|
if new_record?
|
105
|
-
|
112
|
+
imyou_nicknames.build(name: nickname)
|
106
113
|
else
|
107
|
-
|
114
|
+
imyou_nicknames.find_or_create_by(name: nickname)
|
108
115
|
end
|
109
116
|
end
|
110
117
|
|
111
118
|
def remove_nickname(nickname)
|
112
119
|
if new_record?
|
113
|
-
array =
|
120
|
+
array = imyou_nicknames.to_a.delete_if do |imyou_nickname|
|
114
121
|
imyou_nickname.name == nickname
|
115
122
|
end
|
116
|
-
|
123
|
+
imyou_nicknames.replace(array)
|
117
124
|
else
|
118
|
-
|
125
|
+
imyou_nicknames.find_by(name: nickname)&.destroy!
|
119
126
|
end
|
120
127
|
true
|
121
128
|
end
|
122
129
|
|
123
130
|
def nicknames=(new_nicknames)
|
124
131
|
if new_record?
|
125
|
-
new_nicknames&.each
|
126
|
-
self.imyou_nicknames.build(name: new_nickname)
|
127
|
-
end
|
132
|
+
new_nicknames&.each { |new_nickname| imyou_nicknames.build(name: new_nickname) }
|
128
133
|
elsif new_nicknames.blank?
|
129
|
-
|
134
|
+
remove_all_nicknames
|
130
135
|
else
|
131
|
-
|
132
|
-
new_nicknames.each
|
133
|
-
self.imyou_nicknames.find_or_create_by(name: new_nickname)
|
134
|
-
end
|
136
|
+
imyou_nicknames.where.not(name: new_nicknames).delete_all
|
137
|
+
new_nicknames.each { |new_nickname| imyou_nicknames.find_or_create_by(name: new_nickname) }
|
135
138
|
end
|
136
139
|
end
|
137
140
|
end
|
138
141
|
end
|
139
142
|
end
|
140
|
-
end
|
143
|
+
end
|
data/lib/imyou/nickname.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Imyou
|
2
4
|
class Nickname < ::ActiveRecord::Base
|
3
5
|
self.table_name = 'imyou_nicknames'
|
4
6
|
belongs_to :model, polymorphic: true
|
5
7
|
|
6
|
-
scope :by_type, ->
|
8
|
+
scope :by_type, ->(klass) { where(model_type: klass.name) }
|
7
9
|
scope :default_order, -> { order(id: :asc) }
|
8
10
|
default_scope { default_order }
|
9
11
|
|
10
12
|
validates :name, presence: true
|
11
|
-
validates_uniqueness_of :name, scope: [
|
13
|
+
validates_uniqueness_of :name, scope: %i[model_id model_type]
|
12
14
|
end
|
13
|
-
end
|
15
|
+
end
|
data/lib/imyou/version.rb
CHANGED
data/lib/imyou.rb
CHANGED
metadata
CHANGED
@@ -1,35 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imyou
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- patorash
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "<"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 7.2.0
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
22
|
version: 5.0.0
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 7.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
+
- - "<"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 7.2.0
|
27
30
|
- - ">="
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 5.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: database_cleaner
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "<"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.0'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.99.0
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
30
47
|
- - "<"
|
31
48
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
49
|
+
version: '3.0'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.99.0
|
33
53
|
- !ruby/object:Gem::Dependency
|
34
54
|
name: rake
|
35
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,33 +65,137 @@ dependencies:
|
|
45
65
|
- !ruby/object:Gem::Version
|
46
66
|
version: '13.0'
|
47
67
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
68
|
+
name: rubocop
|
49
69
|
requirement: !ruby/object:Gem::Requirement
|
50
70
|
requirements:
|
51
71
|
- - "~>"
|
52
72
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
73
|
+
version: '1.24'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '1.24'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rubocop-minitest
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.17'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0.17'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rubocop-performance
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '1.13'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '1.13'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rubocop-rake
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0.6'
|
54
116
|
type: :development
|
55
117
|
prerelease: false
|
56
118
|
version_requirements: !ruby/object:Gem::Requirement
|
57
119
|
requirements:
|
58
120
|
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0.6'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: sqlite3
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "<"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '3.0'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '1.3'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "<"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '3.0'
|
140
|
+
- - ">="
|
59
141
|
- !ruby/object:Gem::Version
|
60
142
|
version: '1.3'
|
61
143
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
144
|
+
name: concurrent-ruby
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - '='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.3.4
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - '='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 1.3.4
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: mutex_m
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0.1'
|
164
|
+
type: :development
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - "~>"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0.1'
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: bigdecimal
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - "~>"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '3.0'
|
178
|
+
type: :development
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '3.0'
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: base64
|
63
187
|
requirement: !ruby/object:Gem::Requirement
|
64
188
|
requirements:
|
65
189
|
- - "~>"
|
66
190
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
191
|
+
version: '0.1'
|
68
192
|
type: :development
|
69
193
|
prerelease: false
|
70
194
|
version_requirements: !ruby/object:Gem::Requirement
|
71
195
|
requirements:
|
72
196
|
- - "~>"
|
73
197
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
198
|
+
version: '0.1'
|
75
199
|
description: Imyou has feature of attaching popular name to ActiveRecord model.
|
76
200
|
email:
|
77
201
|
- chariderpato@gmail.com
|
@@ -82,6 +206,8 @@ files:
|
|
82
206
|
- ".github/workflows/gem-push.yml"
|
83
207
|
- ".github/workflows/test.yml"
|
84
208
|
- ".gitignore"
|
209
|
+
- ".rubocop.yml"
|
210
|
+
- ".rubocop_todo.yml"
|
85
211
|
- CODE_OF_CONDUCT.md
|
86
212
|
- Gemfile
|
87
213
|
- LICENSE.txt
|
@@ -95,6 +221,7 @@ files:
|
|
95
221
|
- gemfiles/rails_6.0.gemfile
|
96
222
|
- gemfiles/rails_6.1.gemfile
|
97
223
|
- gemfiles/rails_7.0.gemfile
|
224
|
+
- gemfiles/rails_7.1.gemfile
|
98
225
|
- imyou.gemspec
|
99
226
|
- lib/generators/imyou/migration/migration_generator.rb
|
100
227
|
- lib/generators/imyou/migration/templates/active_record/migration.rb
|
@@ -105,8 +232,9 @@ files:
|
|
105
232
|
homepage: https://github.com/patorash/imyou
|
106
233
|
licenses:
|
107
234
|
- MIT
|
108
|
-
metadata:
|
109
|
-
|
235
|
+
metadata:
|
236
|
+
rubygems_mfa_required: 'true'
|
237
|
+
post_install_message:
|
110
238
|
rdoc_options: []
|
111
239
|
require_paths:
|
112
240
|
- lib
|
@@ -114,15 +242,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
242
|
requirements:
|
115
243
|
- - ">="
|
116
244
|
- !ruby/object:Gem::Version
|
117
|
-
version: '2.
|
245
|
+
version: '2.6'
|
118
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
247
|
requirements:
|
120
248
|
- - ">="
|
121
249
|
- !ruby/object:Gem::Version
|
122
250
|
version: '0'
|
123
251
|
requirements: []
|
124
|
-
rubygems_version: 3.
|
125
|
-
signing_key:
|
252
|
+
rubygems_version: 3.3.27
|
253
|
+
signing_key:
|
126
254
|
specification_version: 4
|
127
255
|
summary: Imyou has feature of attaching popular name to ActiveRecord model.
|
128
256
|
test_files: []
|