2016-07-19 6 views
0

私はusersprofilesの2つのテーブルを持っています。 users has_one profile,profiles belongs_to userアソシエーションをレールで2ウェイ通りにする方法

@profiles.user.email私はユーザテーブルのemailカラムにアクセスできます。しかし、私は の列にprofileのテーブルにアクセスすることはできません。それは1つだけの通りがあり、上に行くようです。

私はこの2つの道を通り抜けることができますか?

答えて

0

has_one-belong_to関係は既に双方向の通りでなければなりません。

あなたが持っていることを確認してください:あなたが正しく設定され、それらの両方を持っている場合は

Userモデル

class User < ApplicationRecord 
    has_one :profile 
end 

Profileモデル

class Profile < ApplicationRecord 
    belongs_to :user 
end 

は、あなたのためにいくつかのコードを追加します。そのため、人々は問題がどこにあるかを知ることができます。

UPDATE

あなたは関連付けが正しく動作するかどうかをテストするために、レールのコンソールを使用することができます。端末にrails c -sを使用して、サンドボックスモードでレールコンソールを開きます(すべての変更は終了時にロールバックされます)。

コンソールでユーザーとプロファイルを作成し、それがどのように動作するかを確認します。

user = User.create!(email: '[email protected]') 
user.create_profile!(last_name: 'test') 

次に、user.profile.last_nameを試してみてください。

+0

これはまさに私が持っているものです。 – Denny

+0

<テーブルのボーダー= "1"> ユーザーメール 姓 最終ログイン時刻 <番目はcolspan = "3"> <%@ users.each do | user | %> ​​<%= user.email%> ​​<%= user.profile。姓%> ​​<%= user.last_sign_in_at%> ​​<%= user.admin%> ​​<%=のlink_to 'ショー'> <% end %> ユーザー% – Denny

+0

未定義のメソッド 'lastname 'for nil:NilClass – Denny

0

私はこの関連性をテストするための新しいアプリケーションを作成しました。はい、彼らは通りの2つの方法です。私は

申し訳ありませんが、私はあまりにも時期尚早この質問を...プロファイルテーブルにuser_idをする主キーを変更したとき

何かが間違っていたしなければなりません。

+1

ありがとうございました!サブツリー – Denny

関連する問題