オブジェクトの名前を自動的に取得する関連付けを作成しようとしています。例えば
**User has one Brand**
User Table:
id
Name
=================
**Belongs to User**
Brand Table:
id
user_id
user_name
ユーザー名をブランドテーブルに渡す方法を知りたいのですが、ありがとうございます
オブジェクトの名前を自動的に取得する関連付けを作成しようとしています。例えば
**User has one Brand**
User Table:
id
Name
=================
**Belongs to User**
Brand Table:
id
user_id
user_name
ユーザー名をブランドテーブルに渡す方法を知りたいのですが、ありがとうございます
メソッドを定義するだけです:
class Brand < ActiveRecord::Base
belongs_to :user
def user_name
user.name
end
end
データベースに追加のユーザー名列を含める必要はありません。
brand.user.name を実行するだけで、ユーザーの名前を取得できます。
したがって、ビューに @brand のインスタンスがある場合は、単に @brand.user.name を実行します。
それ以外の場合は、ミーガーが言ったようにします。
b = Brand.first
name = b.user.name
これにはデリゲートメソッドを使用できます。例えば
モデル
class Brand < ActiveRecord::Base
belongs_to :user
delegate :name, to: :user, prefix: true
end
利用方法
brand = Brand.find(params[:id])
puts brand.user_name