From 69e25d5c492e32003fcee0c66ecae23c0db29f02 Mon Sep 17 00:00:00 2001 From: David LeBauer Date: Mon, 29 Jan 2018 12:16:49 -0600 Subject: [PATCH 1/6] added sites_cultivars.rb --- app/models/sites_cultivars.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 app/models/sites_cultivars.rb diff --git a/app/models/sites_cultivars.rb b/app/models/sites_cultivars.rb new file mode 100644 index 000000000..ac706ea5b --- /dev/null +++ b/app/models/sites_cultivars.rb @@ -0,0 +1,16 @@ +class SitesCultivars < ActiveRecord::Base + self.primary_key = "id" + + validates_presence_of :cultivar_id + validates_presence_of :site_id + + belongs_to :cultivar + belongs_to :site + + comma do + cultivar_id + site_id + created_at + updated_at + end +end From fc5700bc757b010c1c4c26664dfa99d1f92f36d5 Mon Sep 17 00:00:00 2001 From: David LeBauer Date: Mon, 29 Jan 2018 12:18:34 -0600 Subject: [PATCH 2/6] adding sites_cultivars relation --- app/models/site.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/site.rb b/app/models/site.rb index cf81f3edd..de9cfb570 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -22,6 +22,9 @@ class Site < ActiveRecord::Base has_many :experiments_sites has_many :experiments, :through => :experiments_sites + + has_many :sites_cultivars, :class_name => "SitesCultivars" + has_many :cultivars, :through => :sites_cultivars has_many :yields has_many :traits From d8664b21349c2c977cc259aa503ebbf577e225dd Mon Sep 17 00:00:00 2001 From: David LeBauer Date: Mon, 29 Jan 2018 12:38:19 -0600 Subject: [PATCH 3/6] Create sites_cultivars_controller.rb --- app/controllers/sites_cultivars_controller.rb | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 app/controllers/sites_cultivars_controller.rb diff --git a/app/controllers/sites_cultivars_controller.rb b/app/controllers/sites_cultivars_controller.rb new file mode 100644 index 000000000..6073dfe98 --- /dev/null +++ b/app/controllers/sites_cultivars_controller.rb @@ -0,0 +1,60 @@ +class CitationsSitesController < ApplicationController + before_filter :login_required, :except => [ :show ] + + require 'csv' + + # GET /sites + # GET /sites.xml + def index + params[:format] = 'xml' if params[:format].nil? + + # We have a lot of params and they or may not have to be + # passed as conditions this is my way of adding them to conditions + # if need be + + conditions = {} + params.each do |k,v| + next if !SitesCultivars.column_names.include?(k) + conditions[k] = v + end + logger.info conditions.to_yaml + sitescultivars = SitesCultivars.where(conditions) + + respond_to do |format| + format.xml { render :xml => sitescultivars } + format.csv { render :csv => sitescultivars } + format.json { render :json => sitescultivars } + end + end + + # GET /cultivars/new + # GET /cultivars/new.xml + def new + sitescultivars = SitesCultivars.new + + respond_to do |format| + format.xml { render :xml => sitescultivars } + format.csv { render :csv => sitescultivars } + format.json { render :json => sitescultivars } + end + end + + # POST /cultivars + # POST /cultivars.xml + def create + sitescultivars = SitesCultivars.new(params[:sitescultivars]) + + respond_to do |format| + if citationssites.save + format.xml { render :xml => sitescultivars, :status => :created } + format.csv { render :csv => sitescultivars, :status => :created } + format.json { render :json => sitescultivars, :status => :created } + else + format.xml { render :xml => sitescultivars.errors, :status => :unprocessable_entity } + format.csv { render :csv => sitescultivars.errors, :status => :unprocessable_entity } + format.json { render :json => sitescultivars.errors, :status => :unprocessable_entity } + end + end + end + +end From aa3c667cd7522e772f844452fcb5dfeb643cb1c5 Mon Sep 17 00:00:00 2001 From: David LeBauer Date: Mon, 29 Jan 2018 12:40:31 -0600 Subject: [PATCH 4/6] Update cultivar.rb --- app/models/cultivar.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/models/cultivar.rb b/app/models/cultivar.rb index b719b2ac7..8c170c48b 100644 --- a/app/models/cultivar.rb +++ b/app/models/cultivar.rb @@ -6,11 +6,13 @@ class Cultivar < ActiveRecord::Base SEARCH_INCLUDES = %w{ specie } SEARCH_FIELDS = %w{ species.scientificname cultivars.previous_id cultivars.name cultivars.ecotype cultivars.notes } + has_many :sites_cultivars, :class_name => "SitesCultivars" + has_many :sites, :through => :sites_cultivars + belongs_to :specie + has_many :traits has_many :yields - belongs_to :specie - validates :name, presence: true, uniqueness: { scope: :specie_id, From f4d3372c24766b40841a2f551919c6a1bac69d7d Mon Sep 17 00:00:00 2001 From: David LeBauer Date: Mon, 29 Jan 2018 12:41:13 -0600 Subject: [PATCH 5/6] Update cultivar.rb --- app/models/cultivar.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/cultivar.rb b/app/models/cultivar.rb index 8c170c48b..e2950be6c 100644 --- a/app/models/cultivar.rb +++ b/app/models/cultivar.rb @@ -8,10 +8,11 @@ class Cultivar < ActiveRecord::Base has_many :sites_cultivars, :class_name => "SitesCultivars" has_many :sites, :through => :sites_cultivars - belongs_to :specie has_many :traits has_many :yields + + belongs_to :specie validates :name, presence: true, From f6b78a09b0bd6d0a5024bc7604cd3fa067f9c420 Mon Sep 17 00:00:00 2001 From: Scott Rohde Date: Tue, 20 Mar 2018 11:06:14 -0500 Subject: [PATCH 6/6] Corrects the name of the controller used to display SitesCultivars. Corrects the method used to set the default request format. Adds a route for the new controller. --- app/controllers/sites_cultivars_controller.rb | 4 ++-- config/routes.rb | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/sites_cultivars_controller.rb b/app/controllers/sites_cultivars_controller.rb index 6073dfe98..2600dc056 100644 --- a/app/controllers/sites_cultivars_controller.rb +++ b/app/controllers/sites_cultivars_controller.rb @@ -1,4 +1,4 @@ -class CitationsSitesController < ApplicationController +class SitesCultivarsController < ApplicationController before_filter :login_required, :except => [ :show ] require 'csv' @@ -6,7 +6,7 @@ class CitationsSitesController < ApplicationController # GET /sites # GET /sites.xml def index - params[:format] = 'xml' if params[:format].nil? + request.format = :xml if params[:format].nil? # We have a lot of params and they or may not have to be # passed as conditions this is my way of adding them to conditions diff --git a/config/routes.rb b/config/routes.rb index c32fe4531..deee934b1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -170,6 +170,8 @@ end end + resources :sites_cultivars + resources :citations do member do get :search_sites