Compare commits

...

5 Commits

Author SHA1 Message Date
Daniel O'Connor
10e5fb8fb3 Merge branch 'dev' into fix/preserve-scientific-name-attributes 2026-04-25 10:10:04 +09:30
Daniel O'Connor
bbe75df0ad Merge pull request #4550 from Growstuff/Style/FrozenStringLiteralComment
Rubocop: Style/FrozenStringLiteralComment
2026-04-24 08:41:23 +09:30
Daniel O'Connor
279cc88162 Update growstuff_markdown_spec.rb 2026-04-24 00:15:18 +09:30
Daniel O'Connor
d625eb2dbd Rubocop: Style/FrozenStringLiteralComment 2026-04-23 14:30:02 +00:00
google-labs-jules[bot]
82a9b58ab3 Fix: Preserve scientific name attributes on crop edit
When editing a crop, the `recreate_names` method in the `CropsController`
would always destroy and recreate the associated scientific names, even if
they had not changed. This caused any additional attributes on the
scientific names to be lost.

This commit modifies `recreate_names` to first check if the submitted
names are different from the existing ones. If they are the same, the
method returns early, preserving the existing records and their
attributes.

Additionally, this commit corrects a typo in `crop_params` where
`:scientific_name` was used instead of `:name` for the nested attributes,
ensuring that the parameters are permitted correctly.
2025-12-02 13:09:36 +00:00
23 changed files with 52 additions and 8 deletions

View File

@@ -728,13 +728,6 @@ Style/FloatDivision:
Exclude:
- 'app/models/concerns/predict_planting.rb'
# Offense count: 22
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Enabled: false
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:

View File

@@ -204,6 +204,15 @@ class CropsController < ApplicationController
def recreate_names(param_name, name_type)
return if params[param_name].blank?
# Get the submitted names, reject blanks, and sort for comparison
submitted_names = params[param_name].values.reject(&:blank?).sort
# Get the existing names from the database, and sort for comparison
existing_names = @crop.send("#{name_type}_names").pluck(:name).sort
# Return early to prevent destroying and recreating names (and their associated attributes)
# if the list of names has not changed.
return if submitted_names == existing_names
@crop.send("#{name_type}_names").each(&:destroy)
params[param_name].each_value do |value|
next if value.empty?
@@ -226,7 +235,7 @@ class CropsController < ApplicationController
:public_food_key,
:row_spacing, :spread, :height,
:sowing_method, :sun_requirements, :growing_degree_days,
scientific_names_attributes: %i(scientific_name _destroy id)
scientific_names_attributes: %i(name _destroy id)
)
end

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 6.0 upgrade.

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# This migration comes from active_storage (originally 20180723000244)
class AddForeignKeyConstraintToActiveStorageAttachmentsForBlobId < ActiveRecord::Migration[6.0]
def up

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddFieldsToCrops < ActiveRecord::Migration[5.2]
def change
add_column :crops, :row_spacing, :integer

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class PopulateCropFieldsFromOpenfarmData < ActiveRecord::Migration[5.2]
def up
Crop.find_each do |crop|

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddSocialMediaToMembers < ActiveRecord::Migration[6.0]
def change
add_column :members, :website_url, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class RenameOtherHandleToOtherUrlInMembers < ActiveRecord::Migration[6.0]
def change
rename_column :members, :other_handle, :other_url

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class CreateGardenCollaborators < ActiveRecord::Migration[7.2]
def change
create_table :garden_collaborators do |t|

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class CreateAustralianFoodClassificationData < ActiveRecord::Migration[5.2]
def change
create_table :australian_food_classification_data do |t|

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class MakeNotificationsPolymorphic < ActiveRecord::Migration[6.1]
def change
add_column :notifications, :notifiable_type, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class ChangeCommentsPolymorphic < ActiveRecord::Migration[7.2]
def change
add_column :comments, :commentable_type, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddSourceToSeeds < ActiveRecord::Migration[7.2]
def change
add_column :seeds, :source, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddIndexesCrops < ActiveRecord::Migration[7.2]
def change
add_index :alternate_names, :crop_id

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddOverallRatingPlantings < ActiveRecord::Migration[7.2]
def change
add_column :plantings, :overall_rating, :integer

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddEnYoutubeUrlToCrops < ActiveRecord::Migration[7.2]
def change
add_column :crops, :en_youtube_url, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# This migration creates the `versions` table for the Version class.
# All other migrations PT provides are optional.
class CreateVersions < ActiveRecord::Migration[7.2]

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# This migration adds the optional `object_changes` column, in which PaperTrail
# will store the `changes` diff for each update event. See the readme for
# details.

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
class AddPublicFoodKeyToCrops < ActiveRecord::Migration[5.2]
def change
add_column :crops, :public_food_key, :string

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'csv'
namespace :import do

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
FactoryBot.define do
factory :garden_collaborator do
garden

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.feature 'Creating a recurring activity' do

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'rails_helper'
require 'rake'