デバイスを介して「マスターユーザー」が1人いるアプリを構築しています。このマスター ユーザーは、追跡している従業員とアイテムのレコードを作成します。ユーザーが「アイテムをチェックアウト」したい場合、Twilio 電話番号にテキストを送信すると、そのアイテムの新しい「トランザクション」が作成され、チェックインまたはチェックアウトされます。したがって、「employees」、「items」、および「transactions」という 3 つのテーブルがあります。計画では、これらの受信テキストを傍受し、送信元の電話番号、メッセージの内容、および提供されたコードを解析します。つまり、「CI 12345」は「アイテム 12345 をチェックイン」などになります。とにかく、私はAPI をいじってトランザクション レコードを作成する前に、これらのトランザクションを Web アプリ内で手動で実行できるようにするためだけに、このようなものを足場にしています。しかし、トランザクションをアイテム (および/またはユーザー) に関連付けるのに苦労しています。トランザクションには、ブール値の「イン/アウト」値、アクションを実行している従業員と照合するための電話番号、追跡対象のアイテムに関連付けるためのアイテム番号が必要です。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。次に、追跡されているアイテムに関連付けるためのアイテム番号。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。次に、追跡されているアイテムに関連付けるためのアイテム番号。いわば「トランザクション表示ビュー」をロードしようとすると、「トランザクション」に対して定義されたメソッドがないというエラーが表示され続けます。ここで何が起こっているのかわかりません。このすべてにちょっと新しい、これは私の 2 番目のアプリです。
デシベル/schema.rb
ActiveRecord::Schema.define(:version => 20130515114928) do
create_table "employees", :force => true do |t|
t.string "name"
t.string "phone"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "items", :force => true do |t|
t.string "assettag"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "transactions", :force => true do |t|
t.boolean "status"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "item_id"
t.string "empphone"
end
add_index "transactions", ["item_id"], :name => "index_transactions_on_item_id"
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :default => "", :null => false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
end
app/controllers/transactions_controller.rb
class TransactionsController < ApplicationController
# GET /transactions
# GET /transactions.json
def index
@transactions = Transaction.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @transactions }
end
end
# GET /transactions/1
# GET /transactions/1.json
def show
@transaction = Transaction.find(params[:id])
@description = transaction.item.description
respond_to do |format|
format.html # show.html.erb
format.json { render json: @transaction }
end
end
# GET /transactions/new
# GET /transactions/new.json
def new
@transaction = Transaction.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @transaction }
end
end
# GET /transactions/1/edit
def edit
@transaction = Transaction.find(params[:id])
end
# POST /transactions
# POST /transactions.json
def create
@transaction = Transaction.new(params[:transaction])
respond_to do |format|
if @transaction.save
format.html { redirect_to @transaction, notice: 'Transaction was successfully created.' }
format.json { render json: @transaction, status: :created, location: @transaction }
else
format.html { render action: "new" }
format.json { render json: @transaction.errors, status: :unprocessable_entity }
end
end
end
# PUT /transactions/1
# PUT /transactions/1.json
def update
@transaction = Transaction.find(params[:id])
respond_to do |format|
if @transaction.update_attributes(params[:transaction])
format.html { redirect_to @transaction, notice: 'Transaction was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @transaction.errors, status: :unprocessable_entity }
end
end
end
# DELETE /transactions/1
# DELETE /transactions/1.json
def destroy
@transaction = Transaction.find(params[:id])
@transaction.destroy
respond_to do |format|
format.html { redirect_to transactions_url }
format.json { head :no_content }
end
end
end
アプリ/モデル/item.rb
class Item < ActiveRecord::Base
attr_accessible :assettag, :description
validates :assettag, presence: true
validates :description, presence: true
has_many :transactions
end
アプリ/モデル/employee.rb
class Employee < ActiveRecord::Base
attr_accessible :name, :phone
validates :phone, presence: true
validates :name, presence: true
end
アプリ/モデル/transaction.rb
class Transaction < ActiveRecord::Base
attr_accessible :status, :item_id
belongs_to :item
validates :item_id, presence: true
delegate :description, to: :item
end
app/controllers/employees_controller.rb
class EmployeesController < ApplicationController
# GET /employees
# GET /employees.json
def index
@employees = Employee.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @employees }
end
end
# GET /employees/1
# GET /employees/1.json
def show
@employee = Employee.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @employee }
end
end
# GET /employees/new
# GET /employees/new.json
def new
@employee = Employee.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @employee }
end
end
# GET /employees/1/edit
def edit
@employee = Employee.find(params[:id])
end
# POST /employees
# POST /employees.json
def create
@employee = Employee.new(params[:employee])
respond_to do |format|
if @employee.save
format.html { redirect_to @employee, notice: 'Employee was successfully created.' }
format.json { render json: @employee, status: :created, location: @employee }
else
format.html { render action: "new" }
format.json { render json: @employee.errors, status: :unprocessable_entity }
end
end
end
# PUT /employees/1
# PUT /employees/1.json
def update
@employee = Employee.find(params[:id])
respond_to do |format|
if @employee.update_attributes(params[:employee])
format.html { redirect_to @employee, notice: 'Employee was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @employee.errors, status: :unprocessable_entity }
end
end
end
# DELETE /employees/1
# DELETE /employees/1.json
def destroy
@employee = Employee.find(params[:id])
@employee.destroy
respond_to do |format|
format.html { redirect_to employees_url }
format.json { head :no_content }
end
end
end
app/controllers/items_controller.rb
class ItemsController < ApplicationController
# GET /items
# GET /items.json
def index
@items = Item.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @items }
end
end
# GET /items/1
# GET /items/1.json
def show
@item = Item.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @item }
end
end
# GET /items/new
# GET /items/new.json
def new
@item = Item.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @item }
end
end
# GET /items/1/edit
def edit
@item = Item.find(params[:id])
end
# POST /items
# POST /items.json
def create
@item = Item.new(params[:item])
respond_to do |format|
if @item.save
format.html { redirect_to @item, notice: 'Item was successfully created.' }
format.json { render json: @item, status: :created, location: @item }
else
format.html { render action: "new" }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
# PUT /items/1
# PUT /items/1.json
def update
@item = Item.find(params[:id])
respond_to do |format|
if @item.update_attributes(params[:item])
format.html { redirect_to @item, notice: 'Item was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
# DELETE /items/1
# DELETE /items/1.json
def destroy
@item = Item.find(params[:id])
@item.destroy
respond_to do |format|
format.html { redirect_to items_url }
format.json { head :no_content }
end
end
end
アプリ/ビュー/トランザクション/show.html.erb
<p id="notice"><%= notice %></p>
<p>
<b>Status:</b>
<%= @transaction.status %>
</p>
<p>
<b>Description:</b>
<%= transaction.description %>
</p>
<%= link_to 'Edit', edit_transaction_path(@transaction) %> |
<%= link_to 'Back', transactions_path %>