Rails通过间接关联显示属性

时间:2012-09-27 06:12:17

标签: ruby-on-rails ruby ruby-on-rails-3 model

这里是rails的新手。我的协会设置如下,它可能不是理想的方式,因此非常欢迎任何推荐:

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

这是视图中的代码:&lt;%= @ post.user.profile.name%&gt;

错误是未定义的方法配置文件

2 个答案:

答案 0 :(得分:0)

您必须在模型中提及以下内容 user.rb

has_many :posts
has_one :profile

profile.rb

belongs_to :user

post.rb

belongs_to :user

然后<%= @post.user.profile.name %>应该有用。

如果您的数据仍然存在问题

答案 1 :(得分:0)

您需要在belongs_toposts模型中定义profile关系才能实现此功能。例如:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

同样使用profile模型