|
333 | 333 | t.integer :access_card_id, null: false |
334 | 334 | t.timestamps null: false |
335 | 335 | end |
| 336 | + |
| 337 | + create_table :agencies, force: true do |t| |
| 338 | + t.string :name |
| 339 | + t.timestamps null: false |
| 340 | + end |
| 341 | + |
| 342 | + create_table :indicators, force: true do |t| |
| 343 | + t.string :name |
| 344 | + t.integer :agency_id, null: false |
| 345 | + t.timestamps null: false |
| 346 | + end |
| 347 | + |
| 348 | + create_table :widgets, force: true do |t| |
| 349 | + t.string :name |
| 350 | + t.integer :indicator_id, null: false |
| 351 | + t.timestamps null: false |
| 352 | + end |
336 | 353 | end |
337 | 354 |
|
338 | 355 | ### MODELS |
@@ -368,7 +385,7 @@ class Post < ActiveRecord::Base |
368 | 385 | has_many :special_post_tags, source: :tag |
369 | 386 | has_many :special_tags, through: :special_post_tags, source: :tag |
370 | 387 | belongs_to :section |
371 | | - has_one :parent_post, class_name: 'Post', foreign_key: 'parent_post_id' |
| 388 | + belongs_to :parent_post, class_name: 'Post', foreign_key: 'parent_post_id' |
372 | 389 |
|
373 | 390 | validates :author, presence: true |
374 | 391 | validates :title, length: { maximum: 35 } |
@@ -696,6 +713,18 @@ class Worker < ActiveRecord::Base |
696 | 713 | belongs_to :access_card |
697 | 714 | end |
698 | 715 |
|
| 716 | +class Agency < ActiveRecord::Base |
| 717 | +end |
| 718 | + |
| 719 | +class Indicator < ActiveRecord::Base |
| 720 | + belongs_to :agency |
| 721 | + has_many :widgets |
| 722 | +end |
| 723 | + |
| 724 | +class Widget < ActiveRecord::Base |
| 725 | + belongs_to :indicator |
| 726 | +end |
| 727 | + |
699 | 728 | ### CONTROLLERS |
700 | 729 | class AuthorsController < JSONAPI::ResourceControllerMetal |
701 | 730 | end |
@@ -986,6 +1015,12 @@ class AccessCardsController < BaseController |
986 | 1015 | class WorkersController < BaseController |
987 | 1016 | end |
988 | 1017 |
|
| 1018 | +class WidgetsController < JSONAPI::ResourceController |
| 1019 | +end |
| 1020 | + |
| 1021 | +class IndicatorsController < JSONAPI::ResourceController |
| 1022 | +end |
| 1023 | + |
989 | 1024 | ### RESOURCES |
990 | 1025 | class BaseResource < JSONAPI::Resource |
991 | 1026 | abstract |
@@ -1992,6 +2027,29 @@ class BlogPostResource < JSONAPI::Resource |
1992 | 2027 | filter :name |
1993 | 2028 | end |
1994 | 2029 |
|
| 2030 | +class AgencyResource < JSONAPI::Resource |
| 2031 | + attributes :name |
| 2032 | +end |
| 2033 | + |
| 2034 | +class IndicatorResource < JSONAPI::Resource |
| 2035 | + attributes :name |
| 2036 | + has_one :agency |
| 2037 | + has_many :widgets |
| 2038 | + |
| 2039 | + def self.sortable_fields(_context = nil) |
| 2040 | + super + [:'widgets.name'] |
| 2041 | + end |
| 2042 | +end |
| 2043 | + |
| 2044 | +class WidgetResource < JSONAPI::Resource |
| 2045 | + attributes :name |
| 2046 | + has_one :indicator |
| 2047 | + |
| 2048 | + def self.sortable_fields(_context = nil) |
| 2049 | + super + [:'indicator.agency.name'] |
| 2050 | + end |
| 2051 | +end |
| 2052 | + |
1995 | 2053 | # CustomProcessors |
1996 | 2054 | class Api::V4::BookProcessor < JSONAPI::Processor |
1997 | 2055 | after_find do |
|
0 commit comments