Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- begin
- require "bundler/inline"
- rescue LoadError => e
- raise e
- end
- gemfile(true) do
- source "https://rubygems.org"
- gem 'pry'
- gem "rails"
- gem "pg"
- gem "pg_search"
- end
- require "active_record"
- require "action_controller/railtie"
- ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "railstestapp")
- ActiveRecord::Base.logger = Logger.new(STDOUT)
- ActiveRecord::Schema.define do
- create_table :users, force: true do |t|
- t.string :email
- t.string :name
- t.timestamps
- end
- create_table :categories, force: true do |t|
- t.string :name
- t.timestamps
- end
- create_table :tickets, force: true do |t|
- t.references :category
- t.references :user
- t.timestamps
- end
- create_table :messages, force: true do |t|
- t.references :ticket
- t.text :body
- t.timestamps
- end
- end
- class User < ActiveRecord::Base
- has_many :tickets
- end
- class Category < ActiveRecord::Base
- has_many :tickets
- end
- class Ticket < ActiveRecord::Base
- include PgSearch
- belongs_to :user
- belongs_to :category
- has_many :messages
- pg_search_scope :tasty_search, :associated_against => {
- :user => [:email],
- :category => [:name],
- :messages => [:body]
- }
- end
- class Message < ActiveRecord::Base
- belongs_to :ticket
- end
- ["Red", "Green", "Blue"].each { |color| Category.create(name: color) }
- ["Bob", "Eric", "Alex"].each_with_index { |name, i| User.create(email: "user_#{i}@example.com", name: name) }
- categories = Category.all.pluck(:id)
- users = User.all.pluck(:id)
- bodies = ["Help me please", "What tastes good here", "Football is better than soccer"]
- 5.times do
- ticket = Ticket.create(user_id: users.sample, category_id: categories.sample)
- ticket.messages.create(body: bodies.sample)
- end
- class App < Rails::Application
- secrets.secret_token = "secret_token"
- secrets.secret_key_base = "secret_key_base"
- config.logger = Logger.new($stdout)
- Rails.logger = config.logger
- routes.draw do
- resources :tickets, only: :index
- end
- end
- tickets = Ticket.tasty_search("soccer")
- puts tickets.first
- binding.pry
- puts 'hi'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement