your_platform 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bdb2a476e0a91647e85d31eb03cd09af8a3734c5
4
- data.tar.gz: 133ef1bc00d68b4f1220107aa59f606cb1d7e410
3
+ metadata.gz: 885faa86efc2aa424a99b5e5347a5776a5f487fc
4
+ data.tar.gz: 1e268cea5b6b923ccdcdae9ca7f21e4b45e92fd8
5
5
  SHA512:
6
- metadata.gz: 157f81d8d96f7ab2b1a69743dd03b9874367f9a4ba09adc265353661574cacdc0aa9a234b35553e0d0f0415e332374f9d1e1bafc8f53bb9d7e34f1808f03e721
7
- data.tar.gz: 347e57de5ce3d7a4c598095fe4a181df8244537563b40374fd6b67dce612691888426ca473f92d11fef0bb4296db50c2b51a30b476194af8a608cea5ecfb85e0
6
+ metadata.gz: 8cfe1bc0d55464b938e545a4dafe305596a20776c4fc6722302f75f1e213b5563a7b8141fe323ac08cce7ecfd366629beb2edd9e213a275787f98141b6487395
7
+ data.tar.gz: 2db144d068a210992ea8469ee65e253a943f05c4f9553b7cd260fe19d4e70a000e65d3cca0191507f901fc0d3aa8e2ea5fb8b34d05b26243278ff9896cc7224f
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # YourPlatform
2
2
 
3
3
  [![Join the chat at https://gitter.im/fiedl/your_platform](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/fiedl/your_platform?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
+ [![Gem Version](https://badge.fury.io/rb/your_platform.svg)](http://badge.fury.io/rb/your_platform)
4
5
  [![Build Status](https://travis-ci.org/fiedl/your_platform.svg?branch=master)](https://travis-ci.org/fiedl/your_platform)
5
6
  [![Code Climate](https://codeclimate.com/github/fiedl/your_platform/badges/gpa.svg)](https://codeclimate.com/github/fiedl/your_platform)
6
7
  [![Dependency Status](https://gemnasium.com/fiedl/your_platform.svg)](https://gemnasium.com/fiedl/your_platform)
@@ -8,12 +8,12 @@ module CorporateVitaHelper
8
8
  def status_group_membership_valid_from_best_in_place( membership )
9
9
  best_in_place( membership,
10
10
  :valid_from_localized_date, # type: :date,
11
- path: user_group_membership_path( id: membership.id,
11
+ url: user_group_membership_path( id: membership.id,
12
12
  controller: :user_group_memberships,
13
13
  action: :update,
14
14
  format: :json
15
15
  ),
16
- :classes => "status_group_date_of_joining"
16
+ :class => "status_group_date_of_joining"
17
17
  )
18
18
  end
19
19
 
@@ -21,8 +21,8 @@ module CorporateVitaHelper
21
21
  event = membership.event
22
22
  best_in_place( membership,
23
23
  :event_by_name,
24
- path: status_group_membership_path( membership ),
25
- classes: 'status_event_by_name',
24
+ url: status_group_membership_path(membership),
25
+ class: 'status_event_by_name',
26
26
  # display_with does more harm than it's good for. We wait for angular!
27
27
  # display_with: lambda do |v|
28
28
  # link_to membership.event.name, membership.event, :class => 'status_event_label'
@@ -38,7 +38,7 @@ module UserCorporations
38
38
  # The user is added as member to this corporation.
39
39
  #
40
40
  def corporation_name=(new_corporation_name)
41
- Corporation.find_or_create_by_name(new_corporation_name).assign_user self
41
+ Corporation.find_or_create_by(name: new_corporation_name).assign_user self
42
42
  end
43
43
 
44
44
  end
@@ -33,12 +33,8 @@ module Flagable
33
33
  self.add_flags new_flag
34
34
  end
35
35
 
36
- def remove_flags( *flags_to_remove )
37
- for flag_to_remove in flags_to_remove
38
- self.flags.find_all_by_key( flag_to_remove ).each do |flag|
39
- flag.destroy
40
- end
41
- end
36
+ def remove_flags(*flags_to_remove)
37
+ self.flags.where(key: flags_to_remove).destroy_all
42
38
  end
43
39
 
44
40
  def remove_flag( flag_to_remove )
@@ -6,9 +6,6 @@ module GroupMixins::Memberships
6
6
 
7
7
  extend ActiveSupport::Concern
8
8
 
9
- # TODO: Refactor conditions to rails 4 standard when migrating to rails 4.
10
- # See, for example, https://github.com/fiedl/neo4j_ancestry/blob/master/lib/models/neo4j_ancestry/active_record_additions.rb#L117.
11
-
12
9
  included do
13
10
 
14
11
  # User Group Memberships
@@ -18,23 +15,26 @@ module GroupMixins::Memberships
18
15
  # memberships.
19
16
  #
20
17
  has_many( :memberships,
18
+ -> { where ancestor_type: 'Group', descendant_type: 'User' },
21
19
  class_name: 'UserGroupMembership',
22
- foreign_key: :ancestor_id, conditions: { ancestor_type: 'Group', descendant_type: 'User' } )
20
+ foreign_key: :ancestor_id )
23
21
 
24
22
  # This associates all memberships of the group that are direct, i.e. direct
25
23
  # parent_group-child_user memberships.
26
24
  #
27
25
  has_many( :direct_memberships,
26
+ -> { where ancestor_type: 'Group', descendant_type: 'User', direct: true },
28
27
  class_name: 'UserGroupMembership',
29
- foreign_key: :ancestor_id, conditions: { ancestor_type: 'Group', descendant_type: 'User', direct: true } )
28
+ foreign_key: :ancestor_id )
30
29
 
31
30
  # This associates all memberships of the group that are indirect, i.e.
32
31
  # ancestor_group-descendant_user memberships, where groups are between the
33
32
  # ancestor_group and the descendant_user.
34
33
  #
35
34
  has_many( :indirect_memberships,
35
+ -> { where ancestor_type: 'Group', descendant_type: 'User', direct: false },
36
36
  class_name: 'UserGroupMembership',
37
- foreign_key: :ancestor_id, conditions: { ancestor_type: 'Group', descendant_type: 'User', direct: false } )
37
+ foreign_key: :ancestor_id )
38
38
 
39
39
 
40
40
  # This method builds a new membership having this group (self) as group associated.
@@ -182,25 +182,25 @@ module GroupMixins::Memberships
182
182
  # when generating the SQL query. This is why the conditions have to be repeated here.
183
183
  #
184
184
  has_many(:members,
185
+ -> { where('dag_links.ancestor_type' => 'Group').uniq },
185
186
  through: :memberships,
186
- source: :descendant, source_type: 'User', :uniq => true,
187
- conditions: { 'dag_links.ancestor_type' => 'Group' }
187
+ source: :descendant, source_type: 'User'
188
188
  )
189
189
 
190
190
  # This associates only the direct group members (users).
191
191
  #
192
192
  has_many(:direct_members,
193
+ -> { where('dag_links.ancestor_type' => 'Group', 'dag_links.direct' => true).uniq },
193
194
  through: :direct_memberships,
194
- source: :descendant, source_type: 'User', :uniq => true,
195
- conditions: { 'dag_links.ancestor_type' => 'Group', 'dag_links.direct' => true }
195
+ source: :descendant, source_type: 'User'
196
196
  )
197
197
 
198
198
  # This associates only the indirect group members (users).
199
199
  #
200
200
  has_many(:indirect_members,
201
+ -> { where('dag_links.ancestor_type' => 'Group', 'dag_links.direct' => false).uniq },
201
202
  through: :indirect_memberships,
202
- source: :descendant, source_type: 'User', :uniq => true,
203
- conditions: { 'dag_links.ancestor_type' => 'Group', 'dag_links.direct' => false }
203
+ source: :descendant, source_type: 'User'
204
204
  )
205
205
 
206
206
  end
@@ -20,7 +20,7 @@ module ProfileFieldTypes
20
20
  end
21
21
 
22
22
  def find_or_create_geo_location
23
- @geo_location ||= GeoLocation.find_or_create_by_address(value) if self.value && self.value != "—"
23
+ @geo_location ||= GeoLocation.find_or_create_by address: value if self.value && self.value != "—"
24
24
  end
25
25
 
26
26
  def display_html
@@ -13,7 +13,7 @@ module Profileable
13
13
  def is_profileable( options = {} )
14
14
  @profile_section_titles = options[:profile_sections] || default_profile_section_titles
15
15
  has_many :profile_fields, as: :profileable, dependent: :destroy, autosave: true
16
- has_many :address_profile_fields, class_name: 'ProfileFieldTypes::Address', conditions: 'type = "ProfileFieldTypes::Address"', as: :profileable, dependent: :destroy, autosave: true
16
+ has_many :address_profile_fields, -> { where type: 'ProfileFieldTypes::Address' }, class_name: 'ProfileFieldTypes::Address', as: :profileable, dependent: :destroy, autosave: true
17
17
 
18
18
  include InstanceMethodsForProfileables
19
19
  end
@@ -1,16 +1,15 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # This module extends the User class. Its purpose is to provide methods to identify a user using
4
- # a given login string. The user may identify himself using his first name plus last name, his last name only, his
5
- # email address or his alias, as long as the identifyer is unique.
2
+ # a given login string. The user may identify himself using his:
3
+ #
4
+ # * first name plus last name
5
+ # * last name only
6
+ # * email address
7
+ # * alias
6
8
  #
7
9
  module UserMixins::Identification
8
10
 
9
11
  extend ActiveSupport::Concern
10
12
 
11
- included do
12
- end
13
-
14
13
  module ClassMethods
15
14
 
16
15
  # The user may identify himself using one of these attributes.
@@ -27,9 +26,12 @@ module UserMixins::Identification
27
26
  # returns a user object if the match was unique.
28
27
  #
29
28
  def find_all_by_identification_string( identification_string )
30
- self.attributes_used_for_identification.collect do |attribute_name|
31
- self.send( "find_all_by_#{attribute_name}".to_sym, identification_string )
32
- end.flatten.uniq
29
+ (
30
+ User.where(alias: identification_string) +
31
+ User.where(last_name: identification_string) +
32
+ User.find_all_by_name(identification_string) +
33
+ User.find_all_by_email(identification_string)
34
+ ).uniq
33
35
  end
34
36
 
35
37
  end
@@ -6,9 +6,6 @@ module UserMixins::Memberships
6
6
 
7
7
  extend ActiveSupport::Concern
8
8
 
9
- # TODO: Refactor conditions to rails 4 standard when migrating to rails 4.
10
- # See, for example, https://github.com/fiedl/neo4j_ancestry/blob/master/lib/models/neo4j_ancestry/active_record_additions.rb#L117.
11
-
12
9
  included do
13
10
 
14
11
  # User Group Memberships
@@ -17,24 +14,27 @@ module UserMixins::Memberships
17
14
  # This associates all UserGroupMembership objects of the group, including indirect
18
15
  # memberships.
19
16
  #
20
- has_many( :memberships,
17
+ has_many( :memberships,
18
+ -> { where ancestor_type: 'Group', descendant_type: 'User' },
21
19
  class_name: 'UserGroupMembership',
22
- foreign_key: :descendant_id, conditions: { ancestor_type: 'Group', descendant_type: 'User' } )
20
+ foreign_key: :descendant_id )
23
21
 
24
22
  # This associates all memberships of the group that are direct, i.e. direct
25
23
  # parent_group-child_user memberships.
26
24
  #
27
25
  has_many( :direct_memberships,
26
+ -> { where ancestor_type: 'Group', descendant_type: 'User', direct: true },
28
27
  class_name: 'UserGroupMembership',
29
- foreign_key: :descendant_id, conditions: { ancestor_type: 'Group', descendant_type: 'User', direct: true } )
28
+ foreign_key: :descendant_id )
30
29
 
31
30
  # This associates all memberships of the group that are indirect, i.e.
32
31
  # ancestor_group-descendant_user memberships, where groups are between the
33
32
  # ancestor_group and the descendant_user.
34
33
  #
35
34
  has_many( :indirect_memberships,
35
+ -> { where ancestor_type: 'Group', descendant_type: 'User', direct: false },
36
36
  class_name: 'UserGroupMembership',
37
- foreign_key: :descendant_id, conditions: { ancestor_type: 'Group', descendant_type: 'User', direct: false } )
37
+ foreign_key: :descendant_id )
38
38
 
39
39
 
40
40
  # This returns the membership of the user in the given group if existant.
@@ -49,26 +49,26 @@ module UserMixins::Memberships
49
49
 
50
50
  # This associates the groups the user is member of, direct as well as indirect.
51
51
  #
52
- has_many(:groups,
52
+ has_many(:groups,
53
+ -> { where('dag_links.descendant_type' => 'User').uniq },
53
54
  through: :memberships,
54
- source: :ancestor, source_type: 'Group', :uniq => true,
55
- conditions: { 'dag_links.descendant_type' => 'User' }
55
+ source: :ancestor, source_type: 'Group'
56
56
  )
57
57
 
58
58
  # This associates only the direct groups.
59
59
  #
60
60
  has_many(:direct_groups,
61
+ -> { where('dag_links.descendant_type' => 'User', 'dag_links.direct' => true).uniq },
61
62
  through: :direct_memberships,
62
- source: :ancestor, source_type: 'Group', :uniq => true,
63
- conditions: { 'dag_links.descendant_type' => 'User', 'dag_links.direct' => true }
63
+ source: :ancestor, source_type: 'Group'
64
64
  )
65
65
 
66
66
  # This associates only the indirect groups.
67
67
  #
68
68
  has_many(:indirect_groups,
69
+ -> { where('dag_links.descendant_type' => 'User', 'dag_links.direct' => false).uniq },
69
70
  through: :indirect_memberships,
70
- source: :ancestor, source_type: 'Group', :uniq => true,
71
- conditions: { 'dag_links.descendant_type' => 'User', 'dag_links.direct' => false }
71
+ source: :ancestor, source_type: 'Group'
72
72
  )
73
73
 
74
74
  end
@@ -1,17 +1,17 @@
1
1
  %table.event_details
2
2
  %tr.description
3
3
  %th=t :description
4
- %td= best_in_place_if can?(:update, @event), @event, :description, placeholder: I18n.t(:description), type: 'textarea'
4
+ %td= best_in_place_if can?(:update, @event), @event, :description, placeholder: I18n.t(:description), as: :textarea
5
5
  %tr.start_at
6
6
  %th=t :start_at
7
- %td= best_in_place_if can?(:update, @event), @event, :localized_start_at, type: 'datetime'
7
+ %td= best_in_place_if can?(:update, @event), @event, :localized_start_at, as: :datetime
8
8
  %tr.end_at
9
9
  %th
10
10
  =t :end_at
11
11
  - if can? :update, @event
12
12
  = surround '(', ')' do
13
13
  =t :optional
14
- %td= best_in_place_if can?(:update, @event), @event, :localized_end_at, type: 'datetime'
14
+ %td= best_in_place_if can?(:update, @event), @event, :localized_end_at, as: :datetime
15
15
  %tr.location
16
16
  %th=t :location
17
17
  %td= best_in_place_if can?(:update, @event), @event, :location
@@ -35,7 +35,7 @@
35
35
  %tr.publish_on_local_website
36
36
  %th
37
37
  %td
38
- = best_in_place @event, :publish_on_local_website, classes: "show_always", :type => :select, collection: [['false', "Nicht auf lokaler Homepage veröffentlichen"], ['true', "Auf lokaler Homepage veröffentlichen"]]
38
+ = best_in_place @event, :publish_on_local_website, class: "show_always", as: :select, collection: [['false', "Nicht auf lokaler Homepage veröffentlichen"], ['true', "Auf lokaler Homepage veröffentlichen"]]
39
39
 
40
40
  = link_to group_events_public_url(group_id: @event.group) do
41
41
  = icon 'list-alt'
@@ -45,7 +45,7 @@
45
45
  %tr.publish_on_global_website
46
46
  %th
47
47
  %td
48
- = best_in_place @event, :publish_on_global_website, classes: "show_always", :type => :select, collection: [['false', "Nicht auf öffentlicher Homepage veröffentlichen (#{Page.find_root.title})"], ['true', "Auf öffentlicher Homepage veröffentlichen (#{Page.find_root.title})"]]
48
+ = best_in_place @event, :publish_on_global_website, class: "show_always", as: :select, collection: [['false', "Nicht auf öffentlicher Homepage veröffentlichen (#{Page.find_root.title})"], ['true', "Auf öffentlicher Homepage veröffentlichen (#{Page.find_root.title})"]]
49
49
 
50
50
  = link_to public_events_url do
51
51
  = icon 'list-alt'
@@ -1,7 +1,7 @@
1
1
  - set_title @group.title
2
2
  %h1= best_in_place_if can?(:rename, @group), @group, :name
3
3
  %div
4
- = best_in_place_if can?(:update, @group), @group, :body, type: :textarea
4
+ = best_in_place_if can?(:update, @group), @group, :body, as: :textarea
5
5
  .show_only_in_edit_mode
6
6
  = render partial: 'shared/markdown_help'
7
7
 
@@ -3,7 +3,7 @@
3
3
  = best_in_place_if can?(:update, page), page, :title
4
4
  - else # Blog Entries:
5
5
  = link_to(page) do
6
- = best_in_place_if can?(:update, page), page, :title, classes: 'click_does_not_trigger_edit', activator: 'only_manual'
6
+ = best_in_place_if can?(:update, page), page, :title, class: 'click_does_not_trigger_edit', activator: 'only_manual'
7
7
  %div.page
8
8
  %div.page_header
9
9
  - if page.author
@@ -18,7 +18,7 @@
18
18
  = localize(page.updated_at)
19
19
  %div.page_body
20
20
  %div{ id: 'page_content', data: { mercury: 'full' } }
21
- = best_in_place_if can?(:update, page), page, :content, type: 'textarea', sanitize: false
21
+ = best_in_place_if can?(:update, page), page, :content, as: :textarea, sanitize: false
22
22
  .show_only_in_edit_mode
23
23
  = render partial: 'shared/markdown_help'
24
24
 
@@ -4,8 +4,8 @@
4
4
  -#
5
5
  - profile_field_css_class = profile_field.parent ? 'attribute profile_field profile_field_child' : 'attribute profile_field profile_field_parent'
6
6
  - profile_field_css_class += " #{profile_field.key}" if profile_field.parent_id
7
- - input_type = 'input'
8
- - input_type = 'textarea' if %w(ProfileFieldTypes::Address ProfileFieldTypes::Description ProfileFieldTypes::About).include? profile_field.type
7
+ - input_type = :input
8
+ - input_type = :textarea if %w(ProfileFieldTypes::Address ProfileFieldTypes::Description ProfileFieldTypes::About).include? profile_field.type
9
9
  -# # For the moment, no 'date' type. The date selector does not work properly with edit_mode.
10
10
  -# input_type = 'date' if profile_field.type == "ProfileFieldTypes::Date"
11
11
  - no_remove ||= false
@@ -25,12 +25,12 @@
25
25
  - if profile_field.parent || lock_label || cannot?(:update, profile_field)
26
26
  %span.label.profile_field_label= profile_field.label
27
27
  - else
28
- = best_in_place profile_field, :label, classes: 'profile_field_label label', html_attrs: { placeholder: I18n.t(profile_field.underscored_type) }
28
+ = best_in_place profile_field, :label, class: 'profile_field_label label', html_attrs: { placeholder: I18n.t(profile_field.underscored_type) }
29
29
 
30
30
  - # value
31
31
  %span.value-wrapper
32
32
  - if profile_field.children_count == 0
33
- = best_in_place_if can?(:update, profile_field), profile_field, :value, {type: input_type, classes: 'value'}
33
+ = best_in_place_if can?(:update, profile_field), profile_field, :value, {as: input_type, class: 'value'}
34
34
 
35
35
  - if profile_field.children_count > 0
36
36
  %ul
@@ -1,3 +1,3 @@
1
1
  module YourPlatform
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -6,7 +6,7 @@ FactoryGirl.define do
6
6
  #
7
7
  factory :mail_message_to_group, :class => Mail do
8
8
 
9
- ignore do
9
+ transient do
10
10
  message "Date: Fri, 29 Mar 2013 23:55:00 +0100\n" +
11
11
  "From: foo@exampe.org\n" +
12
12
  "Subject: Testing Group Email Lists\n" +
@@ -19,7 +19,7 @@ FactoryGirl.define do
19
19
 
20
20
  factory :html_mail_message, :class => Mail do
21
21
 
22
- ignore do
22
+ transient do
23
23
  email_file_name = File.join(File.dirname(__FILE__), './html_email.eml')
24
24
  message File.open(email_file_name, "r").read
25
25
  end
@@ -83,7 +83,7 @@ FactoryGirl.define do
83
83
  end
84
84
 
85
85
  factory :local_admin do
86
- ignore do
86
+ transient do
87
87
  of nil # syntax: create(:local_admin, of: @group)
88
88
  end
89
89
  create_account true
@@ -26,7 +26,7 @@ FactoryGirl.define do
26
26
  #
27
27
  factory :promotion_workflow, :class => Workflow do
28
28
 
29
- ignore do
29
+ transient do
30
30
  remove_from_group_id 0
31
31
  add_to_group_id 0
32
32
  end
@@ -73,7 +73,7 @@ describe GeoLocation do
73
73
  # ==========================================================================================
74
74
 
75
75
  describe ".find_or_create_by_address" do
76
- subject { GeoLocation.find_or_create_by_address(@address_string) }
76
+ subject { GeoLocation.find_or_create_by address: @address_string }
77
77
  describe "for an existing record" do
78
78
  before { @geo_location = GeoLocation.create( address: @address_string ) }
79
79
  it "should find the existing one" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: your_platform
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Fiedlschuster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
11
+ date: 2015-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -911,7 +911,6 @@ files:
911
911
  - app/models/ability.rb
912
912
  - app/models/active_record_associations_patches.rb
913
913
  - app/models/active_record_cache_extension.rb
914
- - app/models/active_record_find_by_extension.rb
915
914
  - app/models/active_record_json_url_extension.rb
916
915
  - app/models/active_record_metric_events_extension.rb
917
916
  - app/models/active_record_read_only_extension.rb
@@ -1123,7 +1122,6 @@ files:
1123
1122
  - app/views/users/show.html.haml
1124
1123
  - config/environment.rb
1125
1124
  - config/initializers/active_record_cache_extension.rb
1126
- - config/initializers/active_record_find_by_extension.rb
1127
1125
  - config/initializers/active_record_flagable_extension.rb
1128
1126
  - config/initializers/active_record_json_url_extension.rb
1129
1127
  - config/initializers/active_record_may_need_review_extension.rb
@@ -1305,7 +1303,6 @@ files:
1305
1303
  - spec/helpers/attachments_helper_spec.rb
1306
1304
  - spec/models/ability_spec.rb
1307
1305
  - spec/models/active_record_cache_extension_spec.rb
1308
- - spec/models/active_record_find_by_extension_spec.rb
1309
1306
  - spec/models/active_record_json_url_extension_spec.rb
1310
1307
  - spec/models/address_label_spec.rb
1311
1308
  - spec/models/app_version_spec.rb
@@ -1450,7 +1447,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1450
1447
  version: '0'
1451
1448
  requirements: []
1452
1449
  rubyforge_project:
1453
- rubygems_version: 2.2.2
1450
+ rubygems_version: 2.4.5
1454
1451
  signing_key:
1455
1452
  specification_version: 4
1456
1453
  summary: Administrative and social network platform for closed user groups.
@@ -1497,7 +1494,6 @@ test_files:
1497
1494
  - spec/helpers/attachments_helper_spec.rb
1498
1495
  - spec/models/ability_spec.rb
1499
1496
  - spec/models/active_record_cache_extension_spec.rb
1500
- - spec/models/active_record_find_by_extension_spec.rb
1501
1497
  - spec/models/active_record_json_url_extension_spec.rb
1502
1498
  - spec/models/address_label_spec.rb
1503
1499
  - spec/models/app_version_spec.rb
@@ -1,20 +0,0 @@
1
- module ActiveRecordFindByExtension
2
- extend ActiveSupport::Concern
3
-
4
- module ClassMethods
5
-
6
- # A Rails 4 alias for `where`.
7
- # See: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/finder_methods.rb
8
- #
9
- # It will return the first matching object and return the object, not an ActiveRecord::Relation.
10
- # If an ActiveRecord::Relation, which is chainable, is needed, use where().
11
- #
12
- def find_by( args )
13
- where( args ).limit( 1 ).first
14
- end
15
-
16
- end
17
-
18
- end
19
-
20
- ActiveRecord::Base.send( :include, ActiveRecordFindByExtension ) if Rails.version < "4.0"
@@ -1 +0,0 @@
1
- require 'active_record_find_by_extension'
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveRecordFindByExtension do
4
-
5
- # The extension described here applies to all ActiveRecord::Base models.
6
- # Therefore, we pick the user model, here.
7
-
8
- before do
9
- @user = create( :user )
10
- @other_user = create( :user )
11
- end
12
-
13
- describe ".find_by" do
14
- subject { User.find_by( first_name: @user.first_name, last_name: @user.last_name ) }
15
- it "should return an object" do
16
- subject.should be_kind_of User
17
- end
18
- it "should not return an ActiveRecord::Relation" do
19
- subject.should_not be_kind_of ActiveRecord::Relation
20
- end
21
- it "should find the correct object" do
22
- subject.should == @user
23
- end
24
- end
25
-
26
- end