好的,我对rails& amp;我很确定我没有使用正确的术语来提问,所以这里是我正在尝试做的一个例子
我在控制器中有这个
def create
@post = Post.new(params[:order])
if @order.save
@token = DownloadToken.create
@post.status => "POSTED" #"POSTED" IS WHAT I WANT STORED UNDER THAT POST'S STATUS IF SAVED
else
render :new
end
end
现在,这不是我想做的,但与我想做的相似。再说一次,我对rails很新。我有什么方法可以手动设置吗?
提前谢谢!
答案 0 :(得分:0)
不太确定你在问什么,但ActiveRecord Callbacks可能就是你想要的。
它将使您能够执行以下操作:
class Post < ActiveRecord::Base
before_create do
self.status = "POSTED"
end
end
我在这里使用before_create
,因为您想在示例代码中创建一个新对象。只有在创建新记录时才会调用before_create
回调,而不是before_save
,而{{1}}将在模型保存时随时调用。
答案 1 :(得分:0)
您可以在模型中添加after_create挂钩
class Post
after_create :set_status
private
def set_status
self.update_attribute(:status, "POSTED")
end
end
或者您可以简单地更新控制器中的记录:
def create
@post = Post.new(params[:order])
if @order.save
@token = DownloadToken.create
@post.update_attribute(:status, "POSTED")
else
render :new
end
end