我會考慮引入第三個模型,我把它叫做Lookup作爲例子,但是你可能想要找一個更好的名字。我還會假設你的用戶和應用程序模型也定義了一個名稱字段。
class Lookup < ActiveRecord::Base
belongs_to :owner, :polymorphic => true
validates_uniqueness_of :name
end
class User < Active::Record::Base
has_a :lookup, :as => :owner, :validate => true
before_create :create_lookup_record
def create_lookup_record
build_lookup(:name => name)
end
end
class App < Active::Record::Base
has_a :lookup, :as => :owner, :validate => true
before_create :create_lookup_record
def create_lookup_record
build_lookup(:name => name)
end
end
LookupsController < ApplicationController
def show
@lookup = Lookup.find_by_name(params[:id])
render :action => "#{@lookup.owner.class.name.pluralize}/show"
end
end
# routes.rb
resources :lookups
我希望這個理念幫助,對不起,如果它沒有用:)