8

そのため、文字列をアクティブ レコード クラスに変換する方法があれば興味があります。

例:Userから継承したクラスがありActiveRecord::Baseます。、などのメソッドを使用できるように、文字列"User"Userクラスに変換する方法はありますか?ActiveRecordfindwhere

4

4 に答える 4

11

String#constantize文字列の名前を持つ定数の値を返します。"User"これはあなたのクラスUserです:

"User".constantize
# => User(id: integer, ...)

これを変数に割り当てて、ActiveRecord メソッドを呼び出すことができます。

model = "User".constantize
model.all
# => [#<User id:1>, #<User id:2>, ...]
于 2013-06-04T11:34:37.907 に答える
3

あなたはあなたのコードを書くだけです

str="User"
 class_name=str.constantize

この形式のデータのようになります

User(id: integer, login: string, name: string, email: string, user_rank: integer

クラス名としてのユーザー

2 番目のメソッドは class_name= Object.const_get(str) です。

于 2013-06-04T12:11:55.117 に答える
2

より安全な方法:

"string".classify.constantize.find(....)
于 2013-06-04T12:35:56.880 に答える