apotonick / gemgem-trbrb

The Trailblazer book's example app.
http://trailblazer.to#book
137 stars 60 forks source link

uninitialized constant Comment::Create::CRUD (NameError) #21

Open agm1988 opened 8 years ago

agm1988 commented 8 years ago

I am follow chapter 5 of the book

app/concepts/comment/operation.rb

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

    contract do
      property :body
      property :weight
      property :thing
      validates :body, length: { in: 6..160 }
      validates :weight, inclusion: { in: ["0", "1"] }
      validates :thing, :user, presence: true

      property :user do
        property :email
        validates :email, presence: true, email: true
      end
    end

    def process(params)
      validate(params[:comment]) do |f|
        f.save
      end
    end
    private
    def setup_model!(params)
      model.thing = Thing.find_by_id(params[:thing_id])
    end
  end
end

config/initializers/trailblazer.rb

require 'trailblazer/autoloading'

require "trailblazer/operation/dispatch"

Trailblazer::Operation.class_eval do
  include Trailblazer::Operation::Dispatch
end

require "roar/decorator"
require "roar/json/hal"

::Roar::Representer.module_eval do
  include Rails.application.routes.url_helpers
  # include Rails.app.routes.mounted_helpers

  def default_url_options
    {}
    end
end
apotonick commented 8 years ago

Hi, are you reading the most recent version? CRUD has been renamed to Model and I'm a 100% sure I changed all occurrences in the book, many months ago. Let me know if that doesn't fix it for you.