【发布时间】:2014-12-29 21:51:18
【问题描述】:
我有一个论坛,其中有帖子、用户和外观(外观控制帖子的已读/未读状态):
class User
has_many :posts, through: :looks
has_many :comments
has_many :looks
end
class Post
belongs_to :user
has_many :looks
has_many :users, through: :looks
end
class Look
belongs_to :post
belongs_to :user
end
这里是posts_controller:
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
最后是haml:
- unless @post.user.blank?
.profileImage{:style => "background: url(#{@post.user.image_url)}"}
%span.userName= @post.user.username
%span.userTitle= @post.user.custom_title
%span.userCount
= @post.user.posts.count + @post.user.posts.count
posts
问题是用户模型中的through :looks 行导致用户属性在创建时没有保存到帖子中。帖子用户似乎是空白的。即使我删除through :looks 行并刷新,用户信息也不会显示。
如果我删除 through :looks 行,它会起作用:用户信息显示出来,一切都很好。但显然 Looks 功能不起作用。
另外,如果我只是删除- unless @post.user.blank?,我会得到一个undefined method image_url
尝试创建帖子时出错。
如何让through :looks 使用我当前的设置?
编辑:
澄清一下,如果我有has_many :posts, through :looks,则 user_id 不会包含在帖子创建中
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 haml