通过回调为对象设置user_id

时间:2014-02-26 19:45:30

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 associations

背景:我有一个模型帖子“belongs_to”用户(我想使用 post.user 来获取帖子创建者)和“has_many,:用户通过:: user_posts“(我想使用 post.users 来获取不是创作者但能够拥有并属于帖子的用户)

目标:目前,调用current_user.posts.create会将current_user添加到post.users,而post.user仍为nil。

我知道我可以简单地执行此操作current_user.posts.create(user_id: current_user.id),但有没有办法自动设置user_id而不必每次都明确设置它? (也许在模型中通过回调?)

1 个答案:

答案 0 :(得分:0)

我发现你声明关联的顺序在这里有所不同:

class Post < ActiveRecord::Base
  belongs_to :user
  has_many :user_posts, dependent: :destroy
  has_many :users, through: :user_posts
end

current_user.posts.create #=> Link with user_id: nil

class Post < ActiveRecord::Base
  has_many :user_posts, dependent: :destroy
  has_many :users, through: :user_posts
  belongs_to :user
end

current_user.posts.create #=> Link with user_id: 1