CityオブジェクトにCarオブジェクトまたはBuildingオブジェクトを追加できるrails関数を記述しています。文字列入力によるメソッドまたはプロパティの参照
関数の最初の部分は、指定された名前のCarオブジェクトまたはBuildingオブジェクトを作成し、それを都市または車のリストに追加することです。 Inflector
で
def addObject(obj_type,obj_name,city_id)
new_obj = obj_type.constantize.create(:name => obj_name)
city = City.find(city_id)
city.obj_type.underscore.pluralize << new_obj
end
、プログラムは、所望のモデルクラスを参照するconstantize
を使用することができます。
(Referencing Model with String inputのおかげで)
例:
new_obj = obj_type.constantize.create(:name => obj_name)
City
オブジェクトの内部リストにアクセスしようとしたときただし、
obj_type.underscore.pluralize
は車」に "車" を回すことができます"
ただし、それは裸の文字列としてのみ動作しますEのフォローは動作しません。
city.obj_type.underscore.pluralize #city.cars desired
などeval()
としてメタプログラミング機能のいくつかの並べ替えが必要になりますか?
はあなたが行うことができ、事前に
でそれを使用するメソッドを作成するには、見たことがあります'Inflector#tableize'? – Eric
「Inflector#underscore」と「Inflector#pluralize」と同じことをしているようです。しかし、それを指摘してくれてありがとう! – rickypai