【发布时间】:2011-08-29 17:56:24
【问题描述】:
我正试图从一个控制器保存到多个模型,这可能真的很简单,但我想不通。
我有一个用户模型,其中有许多 loanitems 和 loanitems 属于设置的用户关联。
在我的loanitems 控制器中,我希望每个loanitem 创建操作来更新user.points
所以目前我有以下代码,它不会引发任何错误,但也不会更新用户模型。
def create
@loanitem = current_user.loanitems.build(params[:loanitem])
respond_to do |format|
if @loanitem.save
@loanitem.user.points = @loanitem.user.points + 50
@loanitem.user.save
format.html {redirect_to root_path, :flash => {:success => "Loan Item created" } }
format.xml{render xml: root_path}
else
format.html {render 'pages/home' }
format.xml {render xml: 'pages/home'}
end
end
end
我也在尝试以下主题的变体
def create
@loanitem = current_user.loanitems.build(params[:loanitem])
respond_to do |format|
if @loanitem.save
current_user.points = current_user.points + 50
current_user.save
format.html {redirect_to root_path, :flash => {:success => "Loan Item created" } }
format.xml{render xml: root_path}
else
format.html {render 'pages/home' }
format.xml {render xml: 'pages/home'}
end
end
end
但是我应该改为向userupdate 控制器发送一些消息吗?目前看起来是这样的......
def update
@user = User.find(params[:id])
if
@user.update_attributes(params[:user])
redirect_to @user, :flash => { :success => "Profile has been updated!"}
else
@title = "Edit Profile"
render 'edit'
end
end
或者我听说业务逻辑真的应该全部包含在模型中,所以也许该方法应该写在User.rb 中,然后由Loanitems 控制器创建方法调用?
我知道这是一个真正的菜鸟问题,但我们非常欢迎任何建议。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3