GithubHelp home page GithubHelp logo

Comments (4)

apotonick avatar apotonick commented on September 28, 2024

I know where the "problem" is. An excerpt from your operation and the contract would help, my friend! 👍

from disposable.

kevinansfield avatar kevinansfield commented on September 28, 2024

app/concepts/horse/crud.rb:

class Horse < ActiveRecord::Base
  class Create < Trailblazer::Operation
    include CRUD
    model Horse, :create

    contract do
      include Reform::Form::ModelReflections

      def self.height_units
        %w(cms hands)
      end

      def height_units
        self.class.height_units
      end

      def self.genders
        %w(Mare Gelding Stalion)
      end

      def genders
        self.class.genders
      end

      property :name
      property :breed
      property :image
      property :gender
      property :dob
      property :height
      property :height_unit
      property :competitor

      validates :name, presence: true,
        uniqueness: { case_sensitive: false, scope: :competitor_id }
      validates :gender, presence: true, inclusion: { in: genders }
      validates :height, presence: true, numericality: true
      validates :height_unit, presence: true, inclusion: { in: height_units }
      validates :competitor, presence: true
    end

    def process(params)
      validate(params[:horse]) do |f|
        f.save
      end
    end

    def competitor
      model.competitor
    end

    private

    def setup_model!(params)
      model.competitor = Competitor.find(params[:competitor_id])
    end
  end

  class Update < Create
    action :update

    contract do
      property :competitor, writeable: false
      property :remove_image
    end

    private

    def setup_model!(params)
      if params[:competitor_id]
        competitor = Competitor.find(params[:competitor_id])
        raise ActiveRecord::RecordNotFound if model.competitor != competitor
      end
    end
  end
end

app/models/horse.rb:

class Horse < ActiveRecord::Base
  belongs_to :competitor
  mount_uploader :image, ImageUploader
end

from disposable.

kevinansfield avatar kevinansfield commented on September 28, 2024

After reverting to these last known working versions it's all fine again:

disposable: https://github.com/apotonick/disposable/tree/9c40c75cda555da92124cecc022e8d40938f3a2f
reform: https://github.com/apotonick/reform/tree/d57c90cd95cdcbe88883ffb02b734847d5c36223

from disposable.

kevinansfield avatar kevinansfield commented on September 28, 2024

The bug was fixed in 00a158f

For reference, I implemented CarrierWave's preview image functionality in my form by using CarrierWave's mount_uploader helper:

class Horse < ActiveRecord::Base
  class Create < Trailblazer::Operation
    include CRUD
    model Horse, :create

    contract do
      extend CarrierWave::Mount
      include Reform::Form::ModelReflections

      property :image
      mount_uploader :image, ImageUploader

      ...

    end
  end
end

from disposable.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.