0

ここでレールを初めて使用します。私の関連付けは以下のように設定されていますが、理想的な方法ではない可能性があるため、推奨事項は大歓迎です。

User has many posts (posts table has user_id)
User has one profile (profile table has user_id)

投稿コントローラー ビュー内で、投稿を所有するユーザーに属するプロファイルの名前 (profile.name) を表示したいと考えています。

私の素朴な最初の推測はそうでし<%= @post.user.profile.name %>たが、明らかにうまくいきませんでした。

これは私のモデルで定義された関連付けです:

class User < ActiveRecord::Base
  has_many :posts
  has_one :profile
end

class Post < ActiveRecord::Base
  belongs_to :user
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

これはビューのコードです: <%= @post.user.profile.name %>

エラーは未定義のメソッド プロファイルです

4

2 に答える 2

0

モデルuser.rbで次のことを言及する必要があります

has_many :posts
has_one :profile

profile.rb

belongs_to :user

post.rb

belongs_to :user

その後、<%= @post.user.profile.name %>動作するはずです。

それでもデータに問題がある場合

于 2012-09-27T06:17:23.207 に答える
0

belongs_toこの作業を行うには、でリレーションpostsprofileモデルを定義する必要があります。例えば:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

profileモデルでも同じことをします

于 2012-09-27T06:22:49.840 に答える