我会考虑引入第三个模型,我把它叫做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
我希望这个理念帮助,对不起,如果它没有用:)