Class: StrongResources::StrongResource
- Inherits:
-
Object
- Object
- StrongResources::StrongResource
- Defined in:
- lib/strong_resources/strong_resource.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
-
#customized_actions ⇒ Object
readonly
Returns the value of attribute customized_actions.
-
#delete ⇒ Object
Returns the value of attribute delete.
-
#destroy ⇒ Object
Returns the value of attribute destroy.
-
#except ⇒ Object
Returns the value of attribute except.
-
#jsonapi_type(type = nil) ⇒ Object
readonly
Returns the value of attribute jsonapi_type.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#only ⇒ Object
Returns the value of attribute only.
-
#relation_type ⇒ Object
Returns the value of attribute relation_type.
-
#relations ⇒ Object
Returns the value of attribute relations.
-
#require ⇒ Object
Returns the value of attribute require.
Class Method Summary collapse
Instance Method Summary collapse
- #attribute(name, type, opts = {}) ⇒ Object
- #belongs_to(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) ⇒ Object
- #delete? ⇒ Boolean
- #destroy? ⇒ Boolean
- #has_many(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) ⇒ Object
- #has_many? ⇒ Boolean
- #has_one(*args, &blk) ⇒ Object
-
#initialize(name) ⇒ StrongResource
constructor
A new instance of StrongResource.
- #on(action_name, &blk) ⇒ Object
- #permits(controller) ⇒ Object
- #remove_attribute(name) ⇒ Object
Constructor Details
#initialize(name) ⇒ StrongResource
Returns a new instance of StrongResource.
19 20 21 22 23 24 25 |
# File 'lib/strong_resources/strong_resource.rb', line 19 def initialize(name) @name = name @jsonapi_type = name.to_s.pluralize @customized_actions = {} self.attributes = {} self.relations = {} end |
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def attributes @attributes end |
#customized_actions ⇒ Object (readonly)
Returns the value of attribute customized_actions.
8 9 10 |
# File 'lib/strong_resources/strong_resource.rb', line 8 def customized_actions @customized_actions end |
#delete ⇒ Object
Returns the value of attribute delete.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def delete @delete end |
#destroy ⇒ Object
Returns the value of attribute destroy.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def destroy @destroy end |
#except ⇒ Object
Returns the value of attribute except.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def except @except end |
#jsonapi_type(type = nil) ⇒ Object (readonly)
Returns the value of attribute jsonapi_type.
8 9 10 |
# File 'lib/strong_resources/strong_resource.rb', line 8 def jsonapi_type @jsonapi_type end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
8 9 10 |
# File 'lib/strong_resources/strong_resource.rb', line 8 def name @name end |
#only ⇒ Object
Returns the value of attribute only.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def only @only end |
#relation_type ⇒ Object
Returns the value of attribute relation_type.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def relation_type @relation_type end |
#relations ⇒ Object
Returns the value of attribute relations.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def relations @relations end |
#require ⇒ Object
Returns the value of attribute require.
3 4 5 |
# File 'lib/strong_resources/strong_resource.rb', line 3 def require @require end |
Class Method Details
.from(name, opts = {}, &blk) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/strong_resources/strong_resource.rb', line 10 def self.from(name, opts = {}, &blk) config = StrongResources.config.strong_resources[name] resource = new(name) resource.require = opts[:require] resource.instance_eval(&config[:base]) resource.instance_eval(&blk) if blk resource end |
Instance Method Details
#attribute(name, type, opts = {}) ⇒ Object
43 44 45 |
# File 'lib/strong_resources/strong_resource.rb', line 43 def attribute(name, type, opts = {}) self.attributes[name] = { type: type, if: opts[:if] } end |
#belongs_to(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/strong_resources/strong_resource.rb', line 73 def belongs_to(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) resource_name = resource || name = self.class.from(resource_name, &blk) add_relation(name, , only, except, delete, destroy) end |
#delete? ⇒ Boolean
35 36 37 |
# File 'lib/strong_resources/strong_resource.rb', line 35 def delete? !!@delete end |
#destroy? ⇒ Boolean
39 40 41 |
# File 'lib/strong_resources/strong_resource.rb', line 39 def destroy? !!@destroy end |
#has_many(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/strong_resources/strong_resource.rb', line 59 def has_many(name, resource: nil, only: nil, except: nil, delete: false, destroy: false, &blk) resource_name = resource || name.to_s.singularize.to_sym = self.class.from(resource_name) .instance_eval(&blk) if block_given? .relation_type = :has_many add_relation(name, , only, except, delete, destroy) end |
#has_many? ⇒ Boolean
55 56 57 |
# File 'lib/strong_resources/strong_resource.rb', line 55 def has_many? relation_type == :has_many end |
#has_one(*args, &blk) ⇒ Object
85 86 87 |
# File 'lib/strong_resources/strong_resource.rb', line 85 def has_one(*args, &blk) belongs_to(*args, &blk) end |
#on(action_name, &blk) ⇒ Object
51 52 53 |
# File 'lib/strong_resources/strong_resource.rb', line 51 def on(action_name, &blk) self.customized_actions[action_name] = blk end |
#permits(controller) ⇒ Object
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/strong_resources/strong_resource.rb', line 89 def permits(controller) base_permits(self, controller).tap do |permits| self.relations.each_pair do |relation_name, opts| = opts[:resource] = (, controller) permits.merge!(:"#{relation_name}_attributes" => ) end end end |
#remove_attribute(name) ⇒ Object
47 48 49 |
# File 'lib/strong_resources/strong_resource.rb', line 47 def remove_attribute(name) self.attributes.delete(name) end |