0

私はかなり新しいレールですが、クールな宝石やAPIを使用しています。私は、このコミュニティが質疑応答の内容を評価していること、あるいはそれらが特定の方法で構築されることが期待されていることを認識しました。私の質問と長い道のりを尋ねる短い方法が提供されています。私はここに優先されていることを教えてください!それは本当の質問です!ruby​​オブジェクトの動的変数を作成するプロジェクト

SHORT VERSION

私はレールのアプリでのユーザー名属性を持つusers_controllerとUserオブジェクトを持っています。これらのユーザーのユーザー名に基づいて動的にグローバル変数を作成するにはどうすればよいですか?例:私のユーザ(id = 1、first_name = "Rob"、username = "rocky")を@rockyとして呼び出し可能にしたい。だから、ターミナルで私のために働い下の最初のコード行に基づいており、私のUsers_controllerに下記行くだろうか:

@rocky = User.find_by_username("rocky") 

WHATGOESHERE = User.find_by_username(params[:username]} 

をか私はのparamsの代わりに、いくつかの形状または形態でこれを使用する必要があります[:名]

@"#{user.username}" 

以下は、私の質問のより長いバージョンです。それはより詳細で、どのように私がこの問題に近づいたかをより詳しく追っています。私が二番目に書いた最初のものは、より簡潔ですが、それはいつも人々が望むものではありません...私はこのサイトでどれが好ましいか教えてください。ありがとう!!

LONG VERSION

私はいくつかのことにいくつかの明快さを必要とします。私は "has_friendship"という名前の宝石を使って私のユーザー間の友情を作り出しています(gem-https://github.com/sungwoncho/has_friendshipへのリンク)。

まず、これはユーザーの作成から友情をリクエストする方法のドキュメント例です。

@mac = User.create(name: "Mac") 
@dee = User.create(name: "Dee") 

# @mac sends a friend request to @dee 
@mac.friend_request(@dee) 

これは私が最初に混乱した場所です。ユーザーには「名前」フィールドがありません。しかし、それは大丈夫です。私は自分の作成したユーザーにグローバル変数を割り当てる必要があることを理解しました。なぜなら、ユーザーは「username」属性の後ろで相互にやりとりするからです。最初の質問、どのように各ユーザーに動的変数名を割り当てるのですか?ドキュメンテーションでは、「Mac」と「Dee」という名前でハードコーディングされています。このグローバル変数をオブジェクトの作成時に作成する必要があります。私の計画はコントローラでこれを行うことです。ここで私はすでに#は

@users = User.all 
@user = User.includes(:wallet).find_by_id(params[:id]) 

を表示し、ユーザーに@usersと@userを定義していますので、私の思考プロセスは、式の左辺は、あなたが命名していると右側は何それが何であるかの名前でなければならないことです名前はを参照しています。だから、右側のために、私は引用符で、実際のユーザ名と括弧内のコンテンツを置き換える場合は、端末では、それがそのユーザーの情報が表示されますときのよう

User.find_by_username(params[:username]) 

を置くことを思うだろう。だから、どのように私は左側を書くのですか?私は左側がこのようなものであると思うだろう:

@"#{params[:username]}" 

だから、完全な形で私は現在、自分のユーザー名atttributeに基づいて、私のユーザーにグローバル変数を割り当てるために、私のusers_controllerに次のを持っています...

@"#{params[:username]}" = User.find_by_username(params[:username]) 

これは特に左側ですが、私には全く見えません。だから、私は周りの束を見ていると私はこれを行うための正しい方法のように見える唯一の他の事は "instance_variable_set"を使用することですが、私が見てきたすべてが私の状況のた​​めの完全な意味をしません。 ..(いつものように)

答えて

0

あなたの質問から私が知りたいのは、friend_requestメソッドを使用して2人のユーザーを関連付けることです。

このため、任意の変数に割り当てる必要はありません。あなたは直接このようなものでこれを行うことができます - とし がある2つのユーザーの

ID = 1 FIRST_NAME = 'ロッキー' ユーザ名= '岩の'

ID = 2 FIRST_NAME = 'Nimish' ユーザ名は= 'nimish'

User.find_by(username: 'rocky').friend_request(User.find_by(username: 'nimish')) 

OR

User.find_by_username('rocky').friend_request(User.find_by_username('nimish')) 

あなたはインスタンス変数に割り当てるしたい場合も、に対応するインスタンス変数を作成する必要はありませんあなたは、単に@user@requested_userと、これは知っていることは非常に良いですが、その後

@user.friend_request(@requested_user) 
+0

に割り当てることができ ユーザ名値。ありがとうございました! –

+0

@JoOftenあなたを助けてうれしい。 –

関連する問題