我想关联current_user
当我将这些对象关联到Bar创建时,另一件事,这是对的吗?或者我应该在类型控制器上执行此操作吗?
belongs_to :type
belongs_to :user
has_many :bars
has_one :bar
def new
@bar = Bar.new(:type_id => @type.id)
end
def create
@bar = current_user.build_bar(params[:bar].merge(:type_id => @type.id))
if @bar.save
flash.now[:success] = "wohoo!"
render :edit
else
render :new
end
end
答案 0 :(得分:1)
以下是通过关联创建模型的一般Rails方法 - 假设在登录期间或其他地方设置了current_user,并且在before_filter
中正确设置了@type。
在Bar Controller
:
def new
@bar = current_user.bar.build
end
def create
@bar = current_user.bar.build(params[:bar].merge(:type_id => @type.id))
if @bar.save
flash.now[:success] = "wohoo!"
redirect_to @bar
else
render :new
end
end
通过这种方式建立关联会自动将栏上的user_id
字段设置为current_user.id
。
另请注意,您可能希望在成功案例中redirect_to
而不是render
。如果您想直接编辑,请转到用户redirect_to edit_bar_path(@bar)
。如果您想查看有关原因的更多信息,请查看讨论渲染v重定向的Layouts and Rendering Rails Guide及其含义。