No Method Error in MasterkeysController#search

undefined method `pin' for "Masterkey_2304":String

Extracted source (around line #3):

1: <p>
2: <b>Pin:</b>
3: <%=h @masterkey.pin %>
4: </p>
5:
6: <p>
RAILS_ROOT: D:/CRIMPROF
Request

Parameters:

{"Search"=>"Search",
"pin"=>"2304"}
Response

Headers:

{"Content-Type"=>"text/html",
"Cache-Control"=>"no-cache"}
please find the problem and my model looks like....
class Masterkey < ActiveRecord::Base
  has_one :crimprofs
  set_table_name "MASTERKEY"
  set_primary_key :pin
  def self.find_all_elements(masterkey)
    tablename2 = masterkey
    find_by_sql ['SELECT * FROM ?',tablename2]
  end

  validates_uniqueness_of :pin, :scope => :pin
end
and My Controller looks like
class MasterkeysController < ApplicationController
  protect_from_forgery :only => [:create, :delete, :update]

  # GET /masterkeys
  # GET /masterkeys.xml
  def index
    @masterkeys = Masterkey.all
    respond_to do |format|
      format.html # index.html.erb
      format.xml { render :xml => @masterkeys }
    end

  end

  # GET /masterkeys/1
  # GET /masterkeys/1.xml
  def show
    @masterkey = Masterkey.find(params[:id ])
    @rcn = @masterkey.rcn
    puts params[:id ]
    puts @rcn
    respond_to do |format|
      format.html # show.html.erb
      format.xml { render :xml => @masterkey }
    end
  end

  # GET /masterkeys/new
  # GET /masterkeys/new.xml
  def new
    @masterkey = Masterkey.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml { render :xml => @masterkey }
    end
  end

  # GET /masterkeys/1/edit
  def edit
    @masterkey = Masterkey.find(params[:id])
  end

  # POST /masterkeys
  # POST /masterkeys.xml
  def create
      hashMaster = params[:masterkey]
    @masterkey = Masterkey.new()
    @masterkey.pin=hashMaster[:pin]
     @masterkey.rcn = hashMaster[:rcn]
    respond_to do |format|
      if @masterkey.save
        flash[:notice] = 'Masterkey was successfully created.'
        format.html { redirect_to(@masterkey) }
        format.xml { render :xml => @masterkey, :status => :created,
:location => @masterkey }
      else
        format.html { render :action => "new" }
        format.xml { render :xml => @masterkey.errors, :status =>
:unprocessable_entity }
      end
    end
  end

  # PUT /masterkeys/1
  # PUT /masterkeys/1.xml
  def update
    @masterkey = Masterkey.find(params[:id])

    respond_to do |format|
      if @masterkey.update_attributes(params[:masterkey])
        flash[:notice] = 'Masterkey was successfully updated.'
        format.html { redirect_to(@masterkey) }
        format.xml { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml { render :xml => @masterkey.errors, :status =>
:unprocessable_entity }
      end
    end
  end

  # DELETE /masterkeys/1
  # DELETE /masterkeys/1.xml
  def destroy
    @masterkey = Masterkey.find(params[:id])
    @masterkey.destroy

    respond_to do |format|
      format.html { redirect_to(masterkeys_url) }
      format.xml { head :ok }
    end
  end
  def search
    pin_id= params[:pin]
    pin = pin_id.to_i
    @pin = Masterkey.find(pin)
    @masterkey = "Masterkey_#{@pin.id}"
    puts @pin

    @rcn = Masterkey.find_by_sql ("select rcn from masterkey where pin
=" + pin_id)
    puts @rcn
    respond_to do |format|
      format.html
      format.xml { render :xml => @masterkey }
    end
  end
end

In the view you can run <%= debug(@masterkey) %> to inspect the
object, which will probably give you a clue to what the problem is